.net Dll导入问题
本文关键字:问题 导入 Dll net | 更新日期: 2023-09-27 18:32:28
我正在加载一个带有DllImport
和dll名称的dll(因为它与我的应用程序位于同一文件夹中):
[DllImport("myDll.dll")]
直到这里,如果从同一位置打开应用程序,一切正常。但是如果我运行cmd并键入:
"C:'path'to'my'application'app.exe"
应用程序将打开,但不再加载从应用程序本身调用的 DLL。
因此,总而言之,如果我从C:'path'to'my'application'
手动app.exe
打开,DllImport
工作正常并在同一路径中加载dll。如果我从另一个位置打开应用程序,它不再加载。
有什么建议吗?也尝试过
[DllImport("C:''path''to''my''application''myDll.dll")]
和
[DllImport("''myDll.dll")]
但没办法,它不起作用。
DLL 使用 DLL 搜索顺序定位,如下所述:http://msdn.microsoft.com/en-us/library/windows/desktop/ms682586.aspx。由于 DLL 与可执行文件位于同一目录中,因此将找到它,因为包含可执行文件的目录是系统搜索的第一个位置。
因此,我们可以得出结论,DLL 是由加载器找到的。由于您报告工作目录更改时行为会发生变化,因此这似乎是问题所在。DLL 依赖于工作目录。有这样的依赖可能是错误的。您应该找到一种方法来避免这种依赖。