作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的发布文件夹是:
MyApp.exe
MyManagedDLL.dll
NativeDLL.dll
最佳答案
Windows 不知道它需要在子目录中查找 DLL。它只会在选定的几个位置中查找 DLL,从包含 EXE 的文件夹开始。给它一个艰难的时期,它不是很有成效。但是您可以通过调用 SetDllDirectory() 来帮助它。请记住,您的用户不会关心 DLL 的位置。 IT 部门倾向于使用简单的解决方案,当应用程序本身改变 Windows 搜索路径时,解决 DLL 加载问题从来都不是一件有趣的事情。
否则,这是允许 AnyCPU 可执行文件在 32 位和 64 位模式下运行的合理方法。您将使用两个目录,一个是 32 位版本的 DLL,另一个是 64 位版本。并根据 IntPtr.Size 的值相应地调用 SetDllDirectory。
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
static extern bool SetDllDirectory(string lpPathName);
关于.net - 如何在另一个目录中分离托管和非托管 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10044511/
我是一名优秀的程序员,十分优秀!