Pro*_*mer 6 c# c++ dll dllimport visual-studio-2010
我有#.net 4 app,使用vs 2010.我试图导入一个c ++ dll(基于vs 2005建立).
[DllImport("Card.dll")]
Run Code Online (Sandbox Code Playgroud)
我失败了:
无法加载DLL'Card.dll':应用程序无法启动,因为它的并排配置不正确.有关更多详细信息,请参阅应用程序事件日志或使用命令行sxstrace.exe工具.(HRESULT异常:0x800736B1)
使用sxstrace.exe我得到:
错误:无法解析参考Microsoft.VC80.DebugMFC,processorArchitecture ="x86"
我还发现:
缺少MFC80D.DLL和MSVCR80D.DLL
请注意,这不是DebugCRT,因为此问题是由使用Debug编译的DLL而不是Release引起的.我现在使用Release编译的dll,问题是DebugMFC.
我尝试过任何我能在网上找到的东西.为了节省时间,我将介绍我尝试的内容,所以我不会再次得到这个建议:
1-我已安装Microsoft Visual C++ 2010 Redistributable Package + SP1 +安全更新
2-我已安装Microsoft Visual C++ 2008 Redistributable Package
3 - 我已经安装了Microsoft Visual C++ 2005 Redistributable Package
4 - 我尝试将此应用程序作为"发布"而不是"调试"运行
5 - 我试图将entryPoint设置为DllImport
没有帮助.我仍然得到同样的错误.我没有看到任何其他在线建议,而不是上面列出的建议.谁能帮我?
因为它说"无法解析引用Microsoft.VC80.DebugCRT,processorArchitecture ="x86",这意味着您缺少对VC 8.0的调试crt运行时的依赖.这意味着您需要构建一个版本,而不是调试版本的卡.dll.微软没有为调试CRT运行时提供可再发行的软件包.这些软件包只附带visual studio.因此构建一个发布版本的card.dll,这应该有助于你的情况.
你对建筑有控制权吗Card.dll?如果是的话,看看它是如何构建的。它必须使用正确版本的 VC++(随 VS 2005 提供的版本)构建,并启用清单。然后,安装 2005 Redist。包必须解决问题。如果您无法Card.dll自行构建,则必须分析嵌入的清单(如果有)并联系作者合作解决问题。