1

在 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,但我不知道它在寻找哪个或在哪里。

4

3 回答 3

5

的所有依赖项是否都在MyCSharpAssembly.dll同一路径上可用?如果您不确定,请尝试在ILDasm工具中加载 C-Sharp 程序集以了解其依赖项。

作为健全性检查,还要检查是否可以从另一个 C-Sharp 可执行文件加载此 C-Sharp DLL。

于 2009-07-21T11:07:22.710 回答
0

找不到文件?

找不到 C# 程序集?

复制到windows或者system32试试

如果失败,尝试注册

于 2009-07-21T12:40:39.263 回答
0

您有权访问 C# 程序集源代码吗?您可以在调试器中运行托管 C++ 代码吗?查看异常的堆栈跟踪是值得的,这可能会为您提供更多关于异常发生时发生的情况的提示。

我怀疑崩溃可能与您正在执行的操作有关。正如 Aamir 提到的,另一种可能性可能是 C# 程序集的依赖项......

于 2009-07-21T12:47:17.143 回答