【发布时间】:2023-04-07 04:22:01
【问题描述】:
我目前正在 VS 2008 中开发一个应用程序,其中我有一个非托管 C++ 库 (A),它封装了两个现有库 (B + C) 以简化功能。 (A) 已经证明可以工作,我可以在 c++ 测试应用程序中成功调用和使用它。
(A) 的主要目的是供 C# 应用程序使用,为此我遵循以下链接:http://blogs.msdn.com/b/borisj/archive/2006/09/28/769708.aspx 创建 CLI 包装器 (D)。
一切似乎都很好,一切都可以编译,我试图在一个简单的 C# 应用程序中对此进行测试。我添加了对 (D) 的引用并启动了程序,但在尝试使用该类时却收到了 BadImageFormatException。根据我读到的内容,人们认为 DLL 中的某个地方存在版本不匹配,但是我已经在 Win32 中构建了它们以相互匹配。
除此之外,我还为 (D) 和 C# 应用程序提供了所有必需但似乎仍然存在问题的 DLL 的副本。我注意到编译时没有为 (D) 创建一个 dll,这是我猜测它为什么会崩溃的原因,但是由于我是新手,所以我不知道它是否应该这样做。
我是否可能没有在某处包含导致此问题的我忽略的 DLL?
TLDR:A 包装 B + C,A 被 D 包装以在 C# 应用程序中使用,但它命中并出现异常。 (我已将所有 DLL 放在它们应该去的地方(据我所知)并确保它们都匹配)。有没有我可能错过的陷阱?
【问题讨论】:
-
对我来说,这听起来像是一些 dll 被编译为 32 位 dll 和一些 64 位 dll ......或者应用程序作为 64 位进程运行并尝试使用 32 位 dll,或者相反......类似那个。
-
64b进程正确加载32b图片,但32b进程无法加载64b图片。
-
@Gusman,这是不正确的。