C++ 如何编译使用从不同编译器编译的库的应用程序?

C++ 如何编译使用从不同编译器编译的库的应用程序?,c++,visual-studio,qt,driver,mingw32,C++,Visual Studio,Qt,Driver,Mingw32,我的问题是作为主题 我目前正在使用Qt creator中的Mingw32编译器编译我的应用程序。问题是,我在应用程序中包含了一个.lib静态库和从Visual Studio 2017编译的头文件 当我在Qt中进一步运行或编译我的应用程序时。我将面临错误代码,无法识别的文件格式指向.lib文件 我有理由怀疑:例如,我不能使用编译器1编译从编译器2编译的其他库 我按照这里的说明:编译“libwdi.lib”文件 仅供参考,我之所以使用Visual Studio编译.lib库(libWdi),是因为在

我的问题是作为主题

我目前正在使用Qt creator中的Mingw32编译器编译我的应用程序。问题是,我在应用程序中包含了一个.lib静态库和从Visual Studio 2017编译的头文件

当我在Qt中进一步运行或编译我的应用程序时。我将面临错误代码,无法识别的文件格式指向.lib文件

我有理由怀疑:例如,我不能使用编译器1编译从编译器2编译的其他库

我按照这里的说明:编译“libwdi.lib”文件

仅供参考,我之所以使用Visual Studio编译.lib库(libWdi),是因为在我尝试使用wingw32 make from Qt5工具后,在我的Windows操作系统上更容易实现。这太痛苦了,因为我甚至无法运行./autogen.sh为Windows上的Mingw32生成makefile


欣赏关于如何为Qt创建者构建<强>可操作的.LIB文件< /强>的任何一步一步的信息,包括使用<强> VS、MIWW和交叉编译器>/P>> P >如果目标库在其公共接口中使用C++特性,那么不管您经历了什么样的操作,都很可能无法工作。在这种情况下,即使是同一编译器的不同版本也经常出现问题


另一方面,纯C通常可以工作(在Windows上,非MS工具集将至少使用MS中间对象格式,即使编译器/链接器不正常使用)。

您不能。C++名称的不规范,但实现定义,这意味着C++ ABI在编译器中是不可移植的,尤其是当涉及到微软时。这就是说,你的问题有点曲折,所以我不确定这是否是你所问的问题。如何检查源代码使用纯C还是C++?如果它使用纯c,我如何从源代码编译它??TKSK别无选择,只能检查标头,尤其是查找名称空间、类、模板和运算符重载。不太可能但仍然可能是带有函数成员的结构。上述任何一个和库都使用C++作为其公共接口的一部分。好的源应该通过头文件的扩展来指示这一点——C,<代码> .HP< <代码>(或类似)C++的头文件扩展名<代码> .H/COD>。不幸的是,即使是C++标题也很常见。