我正在建立一个dll,它引用了另一个dll。我已经添加了第二个dll作为第一个dll项目中的参考,方法是转到Properties > Common Properties > Framework and References > Add New Reference > Browse
我从第三方源代码编译了第二个dll。这两个项目都是C ++ / CLI。每当我的主应用程序尝试在第一个dll中调用包含第二个dll调用的函数时,都会出现以下错误:
在未知模块中发生了类型为'System.IO.FileNotFoundException'的未处理异常。
附加信息:无法加载文件或程序集'NBIS,版本= 1.0.5156.29834,文化=中性,公共密钥令牌=空'或其依赖项之一。该系统找不到指定的文件。
我在与主exe相同的目录中有第二个dll的副本,我什至尝试将副本也保留在第一个dll旁边,但无济于事。
第二个dll引用了几个静态库,但是它包含的唯一程序集引用是
系统
系统数据
系统绘图
系统文件
我将所有这些都添加为第一个dll中的程序集引用。
我该怎么做才能使我的应用程序找到并加载第二个dll?
正如评论中指出的那样,SysInternals的Process Monitor是诊断DLL解决问题的有价值的工具。告诉您第三方DLL何时具有未知的依赖关系,还告诉您Windows在硬盘驱动器的错误角落查找文件或找到错误的文件。
加载程序快照是Windows的内置诊断工具。但是Process Monitor更加方便。
它确实会生成很多信息,这些信息从跟踪的底部开始或者在适当的时间启用跟踪。您通常需要使用其过滤工具来将细水管变成细流。值得花费一个小时的时间来弄清楚,该工具属于任何程序员的黑手党。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句