【发布时间】:2010-07-29 17:52:50
【问题描述】:
我有使用 VC++ 构建的库。我想在程序中使用相同的库并在 cygwin gcc 编译器中构建。这种情况可行吗?
【问题讨论】:
-
你真的需要使用cygwin吗?做什么的? MinGW 在 Windows 环境下的表现要好很多。
标签: c++ c visual-studio visual-c++
我有使用 VC++ 构建的库。我想在程序中使用相同的库并在 cygwin gcc 编译器中构建。这种情况可行吗?
【问题讨论】:
标签: c++ c visual-studio visual-c++
由于 C++ 没有标准化的 ABI,而且由于 Visual C++ 和 g++ 几乎可以肯定具有不同的 ABI,我认为您不能这样做。您唯一真正的选择是将自己限制为 C,而不是 C++。
编辑:如果您使用的所有库都是纯 C(extern "C",在 C++ 术语中),那么您应该能够在编译器之间共享库。 (否则,您的 Cygwin 和 MinGW 应用程序无法调用 Windows API。)您需要小心匹配调用约定。例如,Windows API 使用__stdcall 而不是标准的 C 调用约定。您可以告诉 GCC 使用 function attributes 的调用约定。 Google 和你的库的头文件应该有更多关于使用什么调用约定的信息。
【讨论】:
应该不会
mingw 是使用标准 windows 库的 windows 的 GCC 端口(和许多 gnu 工具) - 它几乎是 cygwin 的替代品,应该更容易链接到 gcc。
【讨论】: