【发布时间】:2011-12-26 22:20:40
【问题描述】:
我正在运行一个引用 C++\CLI 包装器项目的 C# 应用程序,该包装器项目又引用依赖于 Boost 1.47 库的本机 c++ 项目(链接到 ...vc100-mt-gd-1_47.lib 形式的文件)
所有库都是静态链接的,一切都编译得很好。执行 C# 应用程序会导致异常: “...不是有效的 Win32 应用程序。(来自 HRESULT 的异常:0x800700C1)。”声称某些依赖项在某处丢失。
C# 应用程序配置为 x86 平台,而所有其他项目都是 Win32,包括 boost 的二进制文件。
编辑:在添加使用 Boost 库之前,它确实有效
如何找出问题所在?
【问题讨论】:
-
这不是缺少依赖类型的错误。必须是平台目标设置。
-
即使在错误描述中如此说明?
-
也许 AnyCPU 是正确的设置,很难从你的描述中猜到。使用 SysInternals 的 ProcMon.exe 工具来验证您的假设。您将看到它加载了您可能不需要假定为本机代码依赖项的任何 DLL。当平台目标为 x86 时,64 位原生 DLL 将触发此异常。
-
我可以提供哪些详细信息来提供帮助?另外,请注意关于提升是原因的编辑
-
@Seth,是的,我有。我不确定为什么会发生这种情况,但是当 CLR 项目引用使用 boost 的本机项目时,boost 库必须动态链接。静态链接由于某种原因失败。
标签: visual-studio-2010 boost c++-cli