使用\ clr的C ++ DLL的LoadLibrary出现无法解释的错误193

时间:2014-07-23 09:06:21

标签: c++ boost clr loadlibrary

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

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

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

依赖步行者的一切似乎都很正常: enter image description here

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

  

Microsoft(R)COFF / PE Dumper版本9.00.30729.01版权所有(C)   微软公司。保留所有权利。

     

转储文件Lien.dll

     发现了PE签名

     

文件类型:DLL

     

文件标题值                14C机器(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

1 个答案:

答案 0 :(得分:0)

感谢您的链接Patrice Pezillier。 通过使用您的链接解决了这个问题:提升是罪魁祸首。