way*_*yne 8 c# c++ dll interop dllimport
我在cpp中使用了一个非托管的dll,我从我的C#web项目中调用它.它在我的本地主机上工作正常,但根本无法在我的共享主机winhost上运行.当我尝试使用dll中的一个函数时会发生这种情况.
我得到的错误消息是:
"无法加载DLL'dllTest.dll':应用程序无法启动,因为它的并行配置不正确.请参阅应用程序事件日志或使用命令行sxstrace.exe工具获取更多详细信息.(例外情况)来自HRESULT:0x800736B1)","错误":[{"name":"DllNotFoundException","message":"无法加载DLL'ldTest.dll':应用程序无法启动,因为它的并排配置是不正确的.请参阅应用程序事件日志或使用命令行sxstrace.exe工具获取更多详细信息.(HRESULT异常:0x800736B1)"}]}
我怀疑这是一个路径问题.有问题的dll,dllTest.dll放在我的bin文件夹中.我不知道它在哪里搜索dll但有没有办法我可以指定搜索dll的路径.我找不到指定dll相对路径的方法.
我不认为这是一个依赖问题,因为我的dllTest.dll只是一个简单的测试,它只包含一个简单的添加功能.
或者不可能是其他原因?
谢谢您的帮助.
Cod*_*ray 13
问题是你的C++ DLL需要安装CRT库才能工作.错误消息的粗体部分是为您提供的提示:
无法加载DLL"dllTest.dll":应用程序无法启动,因为它的并排配置不正确.有关更多详细信息,请参阅应用程序事件日志或使用命令行sxstrace.exe工具.
这就解释了为什么你的开发机器上的一切都很好 - 它们已经安装在那里,因为它们已经安装了你的开发工具 - 以及为什么它不能在没有安装CRT可再发行组件的生产服务器上运行.
您需要为您编译DLL的Visual Studio版本下载相应的可再发行组件包.例如,如果您使用的是Visual Studio 2010,则可以在此处下载CRT可再发行版的第10版.
或者,您可以使用静态链接的运行时库来编译DLL .为此,请更改项目属性以抛出/MT
开关而不是/MD
- (可在UI中的"配置属性" - >"C/C++" - >"代码生成" - >"运行时库"中找到).
归档时间: |
|
查看次数: |
10190 次 |
最近记录: |