我们使用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。
依赖步行者的一切似乎都很正常:
我们使用了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
答案 0 :(得分:0)
感谢您的链接Patrice Pezillier。 通过使用您的链接解决了这个问题:提升是罪魁祸首。