在 Windows XP 系统上,我正在编写一个托管 C++ 库,它调用 C# 程序集中的代码。不幸的是,一旦我开始在 C# 程序集中引用符号,运行托管 C++ 库就会失败并出现此错误(我从 XP 崩溃对话框中复制了它):
EventType : clr20r3
P1 : treeviewdemo.exe
P2 : 0.0.0.0
P3 : 4a5d6d62
P4 : system.windows.forms
P5 : 2.0.0.0
P6 : 4889dee7
P7 : 12fc
P8 : ac
P9 : system.io.filenotfoundexception
Manged C++ 库基本上就是:
#using "C:\\MyCSharpAssembly.dll";
__declspec(dllexport) void callMangagedCode() {
ManagedObject ^o = nullptr;
}
'#using' 本身似乎不会引起任何问题,但是一旦我开始使用 C# DLL 中的符号,我就会遇到问题。有人知道这是怎么回事吗?
system.io.filenotfoundexception
部分让我觉得没有找到某些 DLL,但我不知道它在寻找哪个或在哪里。
最佳答案
MyCSharpAssembly.dll
的所有依赖项是否在同一路径上可用?如果不确定,请尝试在 ILDasm 中加载 C-Sharp 程序集。找出其依赖项的工具。
作为完整性检查,还要检查此 C-Sharp DLL 是否可以从另一个 C-Sharp 可执行文件加载。
关于c# - 从托管 C++ DLL 使用 C# 程序集时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1158519/