通过rundll32.exe启动类似的DLL时,找不到为exe-application加载的C#DLL

时间:2013-08-13 16:07:31

标签: c# .net dll c++-cli

我构建了一个C ++ / CLI DLL,它是某些.NET C#DLL的包装器。作为示例应用程序,我已经基于WindowsForms GUI为exe应用程序构建了一个简单的项目。它适用于我的C ++ / CLI库和提到的.NET C#DLL。但是,如果我构建另一个C ++ DLL,它替换了这个示例exe-application,它不会成功加载.NET C#DLL,尽管它位于当前的Windows路径中。尝试从此C#代码调用某个函数时发生以下异常:

  

MyApp.dll中发生未处理的“System.IO.FileNotFoundException”类型异常附加信息:   无法加载文件或程序集'xxxx,Version = yyyy,Culture = neutral,PublicKeyToken = null'   或其中一个依赖项。系统找不到指定的文件

有什么问题?一般来说,C#DLL应该如何链接到非托管可执行文件?这是明显的问题吗? 提前谢谢。

1 个答案:

答案 0 :(得分:3)

加载.NET程序集时不使用Windows路径。程序集必须与可执行文件位于同一文件夹中,或与GAC位于同一文件夹中。 (这有点过于简单,请参阅下面的链接了解更多细节)