首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.net DllImport问题

.net DllImport问题
EN

Stack Overflow用户
提问于 2014-11-30 14:30:21
回答 1查看 114关注 0票数 0

我正在用DllImport和dll的名称加载dll (因为它与我的应用程序位于同一个文件夹中):

代码语言:javascript
复制
[DllImport("myDll.dll")]

在此之前,如果应用程序是从同一个位置打开的,所有这些都可以正常工作。但是如果我运行cmd并键入:

代码语言:javascript
复制
"C:\path\to\my\application\app.exe"

应用程序将打开,但从应用程序本身调用的dll不再加载。

因此,总之,如果我从app.exe手动打开C:\path\to\my\application\DllImport可以正常工作,并在相同的路径中加载dll。如果我从另一个位置打开应用程序,它就不会再加载了。

有什么建议吗?也试过

代码语言:javascript
复制
[DllImport("C:\\path\\to\\my\\application\\myDll.dll")]

代码语言:javascript
复制
[DllImport("\\myDll.dll")]

但不可能这不管用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-30 14:45:01

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27214327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档