开发跨平台 C++使用 qmake 的静态库(通过 Mac 上的 Qt Creator IDE)

发布于 2024-12-15 09:45:25 字数 285 浏览 1 评论 0原文

我正在开发一个旨在在所有平台(linux、mac 和 windows)上工作的库。该库基于Qt,它是一个跨平台的用户界面库。我正在使用 Mac 开发这个库。我开发的当前版本是静态库 (.a),可在 Linux 和 Mac 上运行。这个 .a 库 也可以在 Windows 中使用吗(假设使用 Visual Studio),还是我必须为此创建一个单独的库类型?如果是,我如何从我的 Mac 创建 Windows 静态库?供您参考,我正在使用 QtCreator IDE 创建静态库。一个简单的指南/代码示例/有用的链接将非常有帮助。

I am developing a library which is intended to work on all platforms (linux, mac, and windows). This library is based on Qt, which is a cross platform User interface library. I am developing this library using a Mac. The current build that I develop is a static library (.a), which works on Linux and Mac. Will this .a library also work in Windows (let's say using Visual Studio), or do I have to create a separate library type for that? And if yes, how can I create the windows static library from my Mac? For your information, I am using QtCreator IDE to create the static library. A simple guideline / code examples / useful links would be really helpful.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

骷髅 2024-12-22 09:45:25

首先,如果您想编写跨平台软件,您需要在目标平台上对其进行测试。如果您没有 Windows 计算机可供测试,那么您可以与 Windows 兼容性说再见了。

其次,Windows 确实有静态库,但它们使用 .lib 扩展名而不是 .a。像 qmake 这样的严肃的构建系统应该能够处理这个问题。如果你告诉它生成静态库,它将在 Windows 上生成 .lib,在其他平台上生成 .a。

当然,要使其能够与任何东西一起工作,就必须使用与其链接到的程序相同的编译器对其进行编译。

如果使用 GCC(或 MinGW,GCC 的 Windows 端口)生成 .lib 文件,则它无法链接到 Visual Studio 项目,因为它们使用不同的 ABI、不同的标准库实现和不同的运行时(并且因为MSVC .lib 文件的格式未记录,并且编译器版本之间会发生变化)。

但是,由于 qmake 适用于大多数编译器,因此使用 Visual Studio 生成 .lib 文件应该没有问题。

First, if you want to write crossplatform software, you'll need to test it on the platforms you target. If you don't have a Windows computer to test on, then you can kiss Windows compatibility goodbye.

Second, Windows does have static libraries, but they use the .lib extension instead of .a. Serious build systems like qmake should be able to handle this. If you tell it to generate a static library, it will generate a .lib on Windows, and .a on other platforms.

Of course, for it to work with anything, it'll have to be compiled with the same compiler as is used for the program it is being linked into.

If you generate the .lib file with GCC (or MinGW, the Windows port of GCC), then it can't be linked into a Visual Studio project, because they use different ABIs, different standard library implementations and different runtimes (and because the format of MSVC .lib files is undocumented and changes between compiler versions).

However, since qmake works with most compilers, there should be no problem in generating the .lib file with Visual Studio.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文