Assembly.Load导致AccessViolationException

时间:2014-03-31 14:31:57

标签: boost dll c++-cli access-violation loadmodule

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

Assembly assembly = Assembly.Load(assemblyName);

以前它没有任何问题,我不确定发生了什么变化,但今天我开始收到以下错误,每当我试图加载dll

  

System.AccessViolationException:{“尝试读取或写入   受保护的记忆这通常表明其他记忆是   损坏。“}

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

有没有人知道可能导致此异常的原因是什么?

附录:

我把它缩小到我最近添加的一个使用boost的lib。 我使用BOOST_LIB_DIAGNOSTIC并发现它使用以下内容:

  

链接到lib文件:libboost_date_time-vc100-mt-gd-1_54.lib

     

链接到lib文件:libboost_thread-vc100-mt-gd-1_54.lib

     

链接到lib文件:libboost_system-vc100-mt-gd-1_54.lib

     

链接到lib文件:libboost_chrono-vc100-mt-gd-1_54.lib

找到一个似乎处理类似问题的boost帖子,但实际上并没有解决我的问题。 它说要使用BOOST_ALL_DYN_LINK预处理器定义,但所有这些都会导致进一步的链接错误:

  

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

1 个答案:

答案 0 :(得分:0)

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

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

总结如下: 添加了BOOST_ALL_DYN_LINK预处理器定义,重新编译了boost以获取所有丢失的文件,并确保dll在相应的文件夹中。