使用Windows编译器之间的编译库编译器,cygwin和linux g ++

问题描述:

如果我有一个基于Windows编译器的dll和.lib,我可以将它们与我用cygwin g ++编译的应用程序链接吗?如果没有,它会与Linux g ++库构建?使用Windows编译器之间的编译库编译器,cygwin和linux g ++

是从Windows编译器生成的库,cygwin g ++和linux g ++可交叉链接?

不,没有。库和可执行文件特定于操作系统和处理器。你可以考虑移植的唯一东西是源代码,如果它写得非常谨慎。一些库(例如QtCore,Gtk/Glib,...)抽象了一个平台并为您提供了一个通用的API(可在许多操作系统上使用),但是您仍然需要为每个系统编译。

您可以将虚拟机作为目标(例如通过Java,Lua字节码或Ocaml字节码...)来获得额外的可移植性(以虚拟机实施的成本为代价)。您也可以将软件编码为脚本(例如使用Python)。

+0

我想使用一个外部库,它们提供了库的windows构建和linux版本。所以只有当他们提供cygwin构建时,我才能够使用它们的lib来达到我的目的? –

+0

不,库的编译形式是操作系统和机器特定的。你必须为Windows和Linux提供独立的版本(甚至是针对Linux x86,Linux x86-64,Linux ARM的独立版本)。 –

+0

您需要cygwin构建库(或从源代码自己构建库)以在cygwin下使用该库。 –