DLLImport会在哪里查找非托管DLL?

12

一个快速的问题:在.Net中声明DLLImport属性时,运行时会在哪里查找以解决该DLL依赖项?我是否需要将DLL及其所有依赖项都放入bin文件夹中?

答案: 运行时会查找指定的DLL的位置并加载它。如果该DLL或其依赖项不在系统搜索路径中,你可以将它们放入应用程序目录下或者使用相关工具将它们打包在一起部署。
2个回答

9

假设我有一个带有插件子文件夹的应用程序。在插件文件夹中,我有一个程序集,它使用 DllImport 从 DLL 中导入本地函数,该 DLL 也在此文件夹中。Windows 会查找这个文件夹吗?还是只会查找应用程序的根文件夹? - Spook
这取决于项目的目标平台吗?我问这个问题是因为我正在使用DIFxAPI.dll中的DriverPackagePreinstall() - 如果我编译为x86或“Any CPU”,它在64位机器上无法工作,但如果我编译为x64,则可以。根据文档,需要一个64位版本的dll,因此我只能得出结论,在使用x64构建时,它使用不同的dll而不是x86。 - komodosp

2

通常情况下,你会期望它查找用户路径中定义的内容。

要查看其中包含的内容,请从命令提示符中键入echo %PATH% [Enter]。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接