繁体   English   中英

C#Dll导入失败:“应用程序无法启动,因为它的并行配置不正确”

[英]C# Dll Import failure: “The application has failed to start because its side-by-side configuration is incorrect”

我有#.net 4 app,使用vs 2010.我试图导入一个c ++ dll(基于vs 2005建立)。

 [DllImport("Card.dll")]

我失败了:

无法加载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 - 我尝试将此应用程序作为“Release”运行而不是“Debug”

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 ,则必须分析嵌入式清单(如果有)并联系作者以协同解决问题。

默认情况下,静态库链接到动态运行时。

如果在VS2005中重新构建dll,请更改“ 配置属性” C / C ++ | 代码生成| 运行时库设置为静态运行时以避免该问题。

您可以使用Dependency Walker来尝试找出您的dll所依赖的依赖项。 如果它说它想要*d.dll ,那么看起来它不是发布版本。 请您的同事检查构建配置。

要使用调试版,您可以尝试以下操作:

  1. 转到c:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\redist\\Debug_NonRedist\\x86\\ (这是针对Visual Studio 2008,x86,根据您的系统调整路径)。
  2. Microsoft.VC90.DebugCRTMicrosoft.VC90.DebugMFC目录复制到包含可执行文件的目录。
  3. 调整复制目录中清单文件中的程序集版本(声明如下: <assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.30729.6161" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> ,根据你的dll需要更改9.0.30729.6161
  4. 尝试运行该应用程序。

所需的程序集版本可以在sxstrace的输出中找到,也可以在*.intermediate.manifest文件中与其构建目录中的dll一起找到。 抱歉,我没有Visual Studio 2005,也无法提供确切的数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM