在Windows XP系统上,我正在编写一个Mangaged 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,但我不知道它在哪个或哪里看。
答案 0 :(得分:5)
MyCSharpAssembly.dll
的所有依赖关系是否都在同一条路径上?如果您不确定,请尝试在ILDasm工具中加载C-Sharp程序集,以找出它的依赖关系。
作为一个完整性检查,还要检查是否可以从另一个C-Sharp可执行文件加载此C-Sharp DLL。
答案 1 :(得分:0)
没有找到C#程序集?
将其复制到windows或system32并尝试
如果失败,请尝试注册
答案 2 :(得分:0)
您是否可以访问C#程序集源代码?您可以在调试器中运行托管C ++代码吗?看一下异常的堆栈跟踪是值得的,这可能会给你更多关于异常发生时发生的事情的提示。
我怀疑崩溃可能与您正在进行的操作有关。正如Aamir所说,另一种可能性可能是C#程序集的依赖......