c++ - 使用\clr 的 C++ DLL 的 LoadLibrary 出现莫名其妙的错误 193

标签 c++ boost clr loadlibrary

我们有一个使用 Boost 1.54.0 和 QT 4.8.6 用 C++ 开发的用户界面。 该接口(interface)可以调用计算模块。每个模块必须实现一个(非纯)抽象类,并链接到在接口(interface)编译期间生成的给定 .lib。启动界面后,我们指出使用QLibrary加载的模块dll的路径。

一切都与原生 C++ 模块完美配合,但最近我们开始使用 .NET 3.5 (C#) 开发新模块。我们希望接口(interface)可以调用这个模块,所以我们决定使用\clr 创建一个中间 c++ 项目:这个项目实现了抽象类,并且可以调用托管的 .NET 代码,这要归功于\clr 模式。

现在我们有一个大问题:我们无法实现正确加载中间 C++ 问题。我们尝试使用 kernel32 方法 LoadLibrary 并获得错误代码 193 (ERROR_BAD_EXE_FORMAT)。这是非常令人惊讶的,因为所有项目都是为 Win32/x86 编译的,并且计算机使用的是 Windows Vista 32 位。

dependancy walker 一切似乎都很正常: enter image description here

我们使用了 dumpbin 但一切似乎都很正常:

Microsoft (R) COFF/PE Dumper Version 9.00.30729.01 Copyright (C) Microsoft Corporation. All rights reserved.

Dump of file Lien.dll

PE signature found

File Type: DLL

FILE HEADER VALUES 14C machine (x86)

           6 number of sections
    53CF72B5 time date stamp Wed Jul 23 10:30:45 2014
           0 file pointer to symbol table
           0 number of symbols
          E0 size of optional header
        2102 characteristics
               Executable
               32 bit word machine
               DLL

最佳答案

感谢 Patrice Pezillier 提供的链接。 该问题已通过使用您的链接得到解决:boost 是罪魁祸首。

关于c++ - 使用\clr 的 C++ DLL 的 LoadLibrary 出现莫名其妙的错误 193,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24906300/

相关文章:

c++ - 值得使用 SSE 还是我应该只依赖编译器?

c++ - 使用 C++/boost 套接字的简单客户端/服务器在 Windows 下工作,但在 Linux 下失败

c++ - 在 Debug模式下访问冲突,但在 Release模式下正常

.NET 3.5 Web 应用程序 - C# 图像动态缩放 - 部署站点的质量低于开发

c# - .NET 4.0 项目如何引用使用 v2.0.50727 运行时的程序集?

c++ - 在扣除自动之前不能使用捕获的变量

c++ - Visual Studio 在白色窗口而不是控制台中运行 C++

c# - 什么是 HostProtectionAttribute,我们为什么要使用它?

c++ - 如何修复 Google OR-Tools 中的 C++03 双尖括号模板语法错误?

c++ - 使用 boost-asio 时实时将缓冲区写入磁盘