C+的LoadLibrary出现了无法解释的错误193+;DLL使用\clr 我们使用C++和Boost 5.4.0和QT4.8开发了一个用户界面。 该接口可以调用计算模块。每个模块必须实现一个(非纯)抽象类,并链接到接口编译期间生成的给定.lib。启动接口后,我们指示使用QLibrary加载的模块dll的路径 P>所有的工作都与本地C++模块完美地结合在一起,但是最近我们开始使用.NET 3.5(C语言)开发新的模块。我们希望接口可以调用这个模块,所以我们决定使用\CLR创建中间C++项目:这个项目实现了抽象类,并且可以调用CLARE模式。 现在我们遇到了一个大问题:我们无法实现正确地加载中间C++问题。我们尝试使用kernel32方法LoadLibrary,得到了一个错误代码193(error_BAD_EXE_FORMAT)。这非常令人惊讶,因为所有的项目都是为Win32/x86编译的,而且计算机使用的是WindowsVista 32位

C+的LoadLibrary出现了无法解释的错误193+;DLL使用\clr 我们使用C++和Boost 5.4.0和QT4.8开发了一个用户界面。 该接口可以调用计算模块。每个模块必须实现一个(非纯)抽象类,并链接到接口编译期间生成的给定.lib。启动接口后,我们指示使用QLibrary加载的模块dll的路径 P>所有的工作都与本地C++模块完美地结合在一起,但是最近我们开始使用.NET 3.5(C语言)开发新的模块。我们希望接口可以调用这个模块,所以我们决定使用\CLR创建中间C++项目:这个项目实现了抽象类,并且可以调用CLARE模式。 现在我们遇到了一个大问题:我们无法实现正确地加载中间C++问题。我们尝试使用kernel32方法LoadLibrary,得到了一个错误代码193(error_BAD_EXE_FORMAT)。这非常令人惊讶,因为所有的项目都是为Win32/x86编译的,而且计算机使用的是WindowsVista 32位,c++,boost,clr,loadlibrary,C++,Boost,Clr,Loadlibrary,依靠沃克,一切似乎都很正常: 我们使用了垃圾桶,但一切似乎都很正常: Microsoft(R)COFF/PE转储程序版本9.00.30729.01版权所有(C) 微软公司。版权所有 文件Lien.dll的转储 找到PE签名 文件类型:DLL 文件头值 14C机器(x86) 谢谢你的链接Patrice Pezillier。 通过使用您的链接解决了问题:boost是罪魁祸首。首先,运行32位Windows的计算机能够构建64位模块。因此,操作系统的比特数是多少并不重要。其次,编写一个简单的main

依靠沃克,一切似乎都很正常:

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

Microsoft(R)COFF/PE转储程序版本9.00.30729.01版权所有(C) 微软公司。版权所有

文件Lien.dll的转储

找到PE签名

文件类型:DLL

文件头值 14C机器(x86)


谢谢你的链接Patrice Pezillier。
通过使用您的链接解决了问题:boost是罪魁祸首。

首先,运行32位Windows的计算机能够构建64位模块。因此,操作系统的比特数是多少并不重要。其次,编写一个简单的
main
程序,该程序除了对遇到问题的模块调用“LoadLibrary”之外,什么都不做。如果你不能让它工作,那么就在这个简单的程序上工作,直到你能让它工作为止。使用BOOST\u THREAD\u DYN\u LINK=>错误代码不一定引用你的DLL,它也可以应用于任何需要加载的依赖DLL。如果使用LoadLibrary()加载混合模式的.NET程序集,这会变得非常棘手,因为您对托管代码中的任何错误都视而不见。如未安装所需的.NET Framework版本,也报告为错误193。如果您使用了错误的工具链,那么它是比3.5 btw更高版本的可能性为非零,请查看ildasm.exe
           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