【发布时间】:2010-11-17 03:15:49
【问题描述】:
我想写一些跨平台的库代码。
我正在创建一个静态和动态库,大部分开发都是在 Linux 中完成的,我已经在 Linux 中生成了静态和共享库,但现在想生成一个 Windows 版本的静态和动态库,形式为.lib 和 .dll 使用相同的源代码。
这可能吗?我有点担心,因为我注意到生成 Windows .dll 文件需要使用 _dllspec 或您的源代码中的类似内容。
我正在寻找在 Windows 上编译我的代码的最佳和最快的解决方案。我不需要在Linux下进行编译;我很乐意直接在 Windows 下进行。此外,我正在使用两个外部库,即 Boost 和 Xerces XML,我已经在我的 Windows 和 Linux 系统上安装了它们,所以希望它们不会成为问题。
我真正想要的是拥有一个可以在 Linux 和 Windows 下编译的单一源代码副本,以生成特定于每个平台的库。我真的不在乎是否必须编辑我的代码以支持 Windows 或 Linux,只要我可以拥有一个源代码副本。
【问题讨论】:
-
交叉编译通常是指在一个平台上构建要在另一个平台上运行的软件。既然你说你想要可以在 Linux 和 Windows 上编译的源代码,那么你的问题实际上更多是关于编写一个可移植的、跨平台的源代码库,而不是关于交叉编译。
-
GIYF 实际上,在这种情况下,libtool 是你的朋友......
-
等待答案时,请查看 CMake:cmake.org
-
我很高兴交叉编译或可移植的代码可以做到这一点。当然,交叉编译是理想的,因为它可以节省我的时间,但就像我说的那样,我无法选择,我会选择最好或最简单的方法。另外如何使用 code::blocks IDE 我听说他们有共享库模板并且它在 linux 和 windows 中可用,有人知道这是否符合我的要求吗?
标签: c++ cross-platform shared-libraries