无法加载dll
DLLimport unable to load dll
我在cpp中使用一个非托管的dll,我从我的c# web项目中调用它。它在我的本地主机上工作得很好,但在我的共享主机winhost上根本不起作用。当我尝试使用dll中的一个函数时,就会发生这种情况。
我得到的错误信息是:
"无法加载DLL 'dllTest.dll':应用程序启动失败因为它的并排配置是不正确的。请参阅应用程序事件日志或使用命令行sxstrace.exe工具获取更多细节。(来自HRESULT的例外:0 x800736b1)"、"错误":[{" name ":"DllNotFoundException"、"消息":"不能加载DLL 'dllTest.dll':应用程序启动失败,原因是它的并排配置不正确。请参阅应用程序事件日志或使用命令行sxstrace.exe工具获取更多细节。(来自HRESULT: 0x800736B1的异常)"}]}
我怀疑这是路径问题。有问题的dll dllTest.dll位于我的bin文件夹中。我不确定它在哪里搜索dll,但有一种方法,我可以为dll的搜索指定路径。我找不到一种方法来指定dll的相对路径。
我不认为这是一个依赖问题,因为我的dllTest.dll只是一个简单的测试,它只包含一个简单的添加函数。
还是没有其他原因?
谢谢你的帮助。
问题是您的c++ DLL需要安装CRT库才能工作。错误消息的粗体部分给出了提示:
无法加载DLL 'dllTest.dll': 应用程序启动失败,因为它的并行配置不正确。请查看应用程序事件日志或使用命令行sxstrace.exe工具获取更多详细信息。
这就解释了为什么在您的开发机器上一切正常——它们已经安装在那里了,因为它们是与您的开发工具一起安装的;以及为什么它不能在没有安装CRT可重新发行版的生产服务器上工作。
您需要下载用于编译DLL的Visual Studio版本的适当的可重新发布包。例如,如果你使用的是Visual Studio 2010,你可以在这里下载10版的CRT。
或者,您可以用静态链接的运行时库编译DLL。要做到这一点,更改您的项目属性以抛出/MT
开关而不是/MD
—(它在UI中的"配置属性"->"C/c++"->"代码生成"->"运行时库"中找到)。
- 从 wxWidgets 中的.DLL加载图标
- 视觉C++:在 DLL 加载期间,全局变量初始化顺序是否具有确定性?
- 无法使用c++/cli包装从c#dll加载函数
- 混合延迟 dll 加载和手动调用 LoadLibraryA 是否安全?
- 无法从 dll 加载函数
- 如何设置我的dll加载,该dll取决于Env-ailiable的某些第三部分DLL
- 将本机非托管的C DLL加载到托管的C#应用中,导致DLL输出垃圾
- 无法在 Python 3.5 上导入 cv2 DLL 加载失败
- 当使用“空dllmain”的dll加载链接到DLL时,应用程序无法启动(0xc0000142)
- 如何从DLL加载的DLL链接到函数
- 如何从Java中的C DLL加载和使用结构和功能
- 我可以用具有相同功能名称的多个DLL加载元素吗?
- 窗口挂钩和 dll 加载
- CEGUI-从DLL加载资源
- 什么可能导致时间函数和 DLL 加载之间死锁
- 以下代码是如何工作的(从DLL加载动态类)
- 错误:Visual Studio中没有为opencv_world310.dll加载符号
- 使用 LoadLibraryA 的 dll 加载错误
- 从 WinAPI C 项目中的专用 DLL 加载图像资源
- 模块"MyShellExt.dll"加载失败