尝试从托管代码加载DLL的FileNotFoundException

时间:2010-09-27 21:01:19

标签: .net dll dynamic-linking

首先,我想说我对Windows链接系统不太熟悉。 (我的大多数编程经验都是在Mac OS上获得的,链接库和框架完全不同。我也不是Windows用户。)

这是我的设置:我在同一个解决方案中有两个项目。第一个是我们称之为Foo的C ++ / CLI项目。 Foo是一个依赖于外部库(Java运行时环境)的库项目,因此具有适当的引用(我相信,因为它编译).lib文件。 (我没有更改与加载该库相关的其他项目设置。)我的另一个项目Bar是一个引用Foo的C#控制台可执行项目。

两者都编译得很好。

但是,当我执行我的Bar.exe C#程序时,它会在构造需要Foo类型的第一个对象之前消失。例外FileNotFoundException表示Foo.dll程序集或其中一个依赖项无法找到。

所以我启动了fuslogvw以查看出现了什么问题,但我真的不明白它是如何工作的,我在其上找到的文档相当无益。根据我的理解,FooBar都无法加载为本机图像,但发现它们是正确的IL并且以这种方式正确加载。但是,没有其他相关的失败提及,显然 在某些时候失败了。我会发布日志,但它们是法语的,我认为它会毫无用处。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

输出目录中是否存在所有可执行文件和dll依赖项?首先使用Depends检查本机依赖项。