首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Assembly.Load引起AccessViolationException

Assembly.Load引起AccessViolationException
EN

Stack Overflow用户
提问于 2014-03-31 14:31:56
回答 1查看 287关注 0票数 0

使用c#,我试图加载用C++/Cli编写的dll,我使用了以下命令:

Assembly assembly = Assembly.Load(assemblyName);

以前,它不存在任何问题,我也不确定是什么改变了,但是今天,每当我试图加载dll时,我就开始得到以下错误

System.AccessViolationException:{“试图读取或写入受保护的内存。这通常表示其他内存已损坏”}。

dll和读取它的代码都在同一解决方案中,dll本身经常被更改(因此我使用dll)。

有没有人知道是什么导致了这一异常?

增编:

我已经将其缩小到了我最近添加的使用boost的库中。我使用了BOOST_LIB_DIAGNOSTIC,发现它使用了以下内容:

链接到lib文件:libboost_date_time- to 100-mt 1_54.lib 链接到lib文件:libboost_线程- to 100-mt 1_54.lib 链接到lib文件:libboost_system- to 100-mt 1_54.lib 链接到lib文件:libboost_ Linking 100-mt 1_54.lib

找到了一个助推帖子,它似乎处理类似的问题,但没有真正解决我的问题。它说要使用BOOST_ALL_DYN_LINK预处理器定义,但只会导致进一步的链接错误:

致命错误LNK1104:无法打开文件‘boost_date_time 100-mt-gd-1_54.lib’

EN

回答 1

Stack Overflow用户

发布于 2014-04-01 15:34:12

这个问题已经以最明显的方式解决了。

从顶部下载并编译了boost,得到了所有丢失的文件(由于某种原因,这些文件从我的文件夹中丢失)。

总之:添加了BOOST_ALL_DYN_LINK预处理器定义,重新编译boost以获取所有丢失的文件,并确保dll位于适当的文件夹中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22764361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档