在 Linux 中编译 windows Qt 代码和库中的更改

Posted

技术标签:

【中文标题】在 Linux 中编译 windows Qt 代码和库中的更改【英文标题】:compiling windows Qt code in Linux and changes in libraries 【发布时间】:2013-06-26 15:13:45 【问题描述】:

我有一个在 Qt(Windows 环境)中开发的代码,我想在 Linux 中编译它,我注意到有一些不同的库,我可以从中找出两个,但我没有找到其余的..我想寻求任何经历过这个问题的人的帮助:

在 Windows 中:

LIBS += -lopengl32 \
-lglu32 \
-lcomdlg32 \
-lQAxServerd \
-lphonond4

到 Linux:

LIBS += -lGL \
-lGLU \

现在为 QAxserver .. 我的 QT 环境中没有它,我找不到可以下载它的地方!

【问题讨论】:

【参考方案1】:

QAxServer 是 Qt 的 ActiveX 模块的一部分,称为“ActiveQt”。 ActiveX 是 Microsoft 的仅限 Windows 的框架。你不会发现它在其他任何地方实现。没有等价物。如果您在应用程序中使用该模块,该应用程序将无法移植到非 Windows 平台。

comdlg32 也是如此。这是 Microsoft 的 Windows 库。它不是便携式的。如果应用程序直接调用它,您需要重新实现该部分。

phonond4 虽然是 Qt 的 Phonon 模块。那是便携的。你不需要链接到它。只需在项目文件中添加QT += phonon即可。

简而言之:您需要重新实现应用程序中调用特定于 Windows 的库的任何部分。

【讨论】:

另外两个呢:phnond4 和 comdlg32 @user573014 这些对我来说就像样板 DLL 依赖项。您根本不需要指定它们,除非应用程序本身直接调用这些库。 它确实调用了这些库 @user573014 那么也别无选择。 comdlg32 也是一个仅限 Windows 的库。 phonond4 虽然是 Qt 的 Phonon 模块。那是便携的。你不需要链接到它。只需在项目文件中添加QT += phonon即可。【参考方案2】:

在 your_project.pro 文件中:

win32 
    LIBS += \
        -lopengl32 \
        -lglu32 \
        -lcomdlg32 \
        -lQAxServerd \
        -lphonond4

linux 
    LIBS += -lGL -lGLU

【讨论】:

以上是关于在 Linux 中编译 windows Qt 代码和库中的更改的主要内容,如果未能解决你的问题,请参考以下文章

windows 重新编译linux下qt工程 怎么弄

Qt Creator中根据为Windows系统还是Linux系统对源码进行条件编译

如何在Windows下构建ARM Linux QT开发环境

Linux下编译静态MinGW环境,编译windows平台Qt程序(使用MXE)

如何使用 Windows 风格在 Linux 中编译 Qt 应用程序?

在linux下,QT怎样编译出windows程序