[英]Do libraries compiled with MinGW work with MSVC?
问题:
我会在 Visual Studio 项目中使用 MinGW 库。
我的系统是如何构建的:
我为我的 Windows 10 系统下载了 ZBar 库(zbar-0.23.91-win_x86_64-DShow.zip
这是链接: https://linuxtv.org/downloads/zbar/binaries/ )。
我在 lib 和 bin 的文件夹中有这些文件:
构建时出错:
错误 LNK2019:在 snprintf 中引用的未解析的外部符号 __mingw_vsnprintf
我的问题
使用 MinGW 编译的库可以与 MSVC 一起使用吗?
此错误消息很容易在 Google 中搜索。 将 -lmingwex 添加到 linker 标志,所需的库是来自 MinGW 发行版的 libmingwex.a。
问题是这些库是用 mingw 编译的,而我需要在 mscv 项目中编译它们。
解决方案是使用 Visual Studio 重建库。
可以毫无问题地使用一切。
您可以使用 C-lion,因为它直接支持 MinGW。 此链接中提供了有关如何将 select MinGW 作为 C-lion 中的工具链的示例教程。
https://www.jetbrains.com/help/clion/how-to-create-toolchain-in-clion.html#custom-targets-toolchain
使用它,您将可以直接访问所有可用于 MinGW 的库。
不,它不能。 使用 MinGW 编译的库仅适用于 MinGW。 您需要使用 MSVC 从源代码编译它。
我没有使用过 windows 并且几乎没有使用过 Visual Studio。 但是如果你愿意,你可以在 Visual Studio ide 上使用 MinGW。
将 MinGW 与 Visual Studio IDE 一起使用
不,在 MinGW 上编译的库不能与 MSVC 一起使用。 主要原因是:
一般来说,用一个编译器编译的东西与另一个编译器不兼容。
您不能在两个不同的编译器上编译相同的源代码。 库 function 定义不同,因此在编译过程中可能会出错。
解决方案是检查哪些预定义函数在 MVSC 中不起作用,然后使用 MVSC 库创建用户定义的 function。
例如
conio.h
中定义的clrscr()
不适用于 clang 编译器,您可以创建预定义的 function 或使用system()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.