.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")]

但没办法,它不起作用。

.net Dll导入问题

DLL 使用 DLL 搜索顺序定位,如下所述:http://msdn.microsoft.com/en-us/library/windows/desktop/ms682586.aspx。由于 DLL 与可执行文件位于同一目录中,因此将找到它,因为包含可执行文件的目录是系统搜索的第一个位置。

因此,我们可以得出结论,DLL 是由加载器找到的。由于您报告工作目录更改时行为会发生变化,因此这似乎是问题所在。DLL 依赖于工作目录。有这样的依赖可能是错误的。您应该找到一种方法来避免这种依赖。