使用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'
答案 0 :(得分:0)
问题已经以最明显的方式解决了。
从顶部下载并编译了boost,得到了所有丢失的文件(由于某种原因,我的文件夹中缺少这些文件)。
总结如下:
添加了BOOST_ALL_DYN_LINK
预处理器定义,重新编译了boost以获取所有丢失的文件,并确保dll在相应的文件夹中。