Qt将代码从Linux迁移到Windows

时间:2012-08-14 22:45:10

标签: c++ windows linux qt porting

我将id3Tag库用于我的项目。我在Linux上成功设置了头文件和库并编译没有麻烦,但是我将代码移动到Windows时遇到了一些麻烦。 (我只是开始学习Windows,所以提前抱歉我可能无知)。  我的环境是Qt Creator

问题在于来自id3标记库的标题(在Linux上没有这样的问题!)我的.pro文件是:  enter image description here

我的错误是: enter image description here

如果我不包含那个标题“id3 / tag.h”,那就完美编译了。 可能是什么原因?实际上我还没有为Windows编程。
我的步骤是:
1.我为Linux编写了部分代码.2。已复制的文件夹,其源代码已在Linux下成功编译到Windows(标题位于当前文件夹中)。
3.没有该标题的编译代码(“id3 / tag.h”) 4.添加了标题(“id3 / tag.h”)
5.从编译器中得到了大量的抱怨

提前致谢,任何提示!

3 个答案:

答案 0 :(得分:2)

您应该仔细阅读编译器的消息。它说要读取win32.readme.first.txt,所以我建议您read it并将您的构建环境设置为您想要链接库的方式。

无法编译,因为您尚未设置ID3LIB_LINKOPTION,导致标头未定义ID3_CPP_EXPORT。但是,这需要初始化ID3_Frame。有关详细信息,请参阅id3 \ globals.h。

答案 1 :(得分:1)

.pro文件中的分隔符(“\”和Linux上的“/”)可能存在问题。所以在项目文件中尝试这个:

#TEMPLATE, CONFIG, HEADERS, ...

win32 { # For Windows
    # Leave an empty line because of the backslash at the end of the variable
    SEPARATOR = \\

}

linux-g++ { # For Linux
    SEPARATOR = /
}

ID3_FOLDER = .$${SEPARATOR}idlib$${SEPARATOR}id3lib-3.8.3$${SEPARATOR}

LIBS += -id3 -L$${ID3_FOLDER}src$${SEPARATOR}.libs

INCLUDEPATH += $${ID3_FOLDER}include $${ID3_FOLDER}src$${SEPARATOR}.libs

编辑:它是关于您图书馆的旗帜。如果包含它的文件在Windows上称为myLib.dll(或Linux上的myLib.so),则应编写-lmyLib。在您的项目文件中,我没有看到-lsthg-id3

之类的内容

答案 2 :(得分:0)

感谢您的回复! 我酌情标出了一个答案 我添加了这个答案,以澄清我究竟遇到了什么样的问题。

我所做的一切都是为了解决问题:

我在main.cpp中定义了(带有源代码的主文件,所有程序都受到控制)

    #define ID3LIB_LINKOPTION 3
    #define ID3_CPP_EXPORT 1

之后我接近42个错误,但幸运的是,他们是新的。 enter image description here

我发现错误只是因为直觉(也许),因为互联网因这种类型错误而过载,但他们并没有对问题的原因提出任何看法。

我在main.cpp中定义了头文件windows.h(但它必须在任何其他头文件之前,否则会有数以万计的错误,谁能想到!)

因此,main.cpp文件的第一行应如下所示:

    #define ID3LIB_LINKOPTION 3
    #define ID3_CPP_EXPORT 1
    #include <windows.h>
    #include "id3/tag.h"

它工作正常。希望这会在某一天帮助某人。

不要尝试使用来自QtCREATOR的图书馆!!!!  只有VS studio c ++,我花了很多时间尝试使用Mingw编译器进行编译,但是使用Mingw编译的源代码无法与微软Visual Studio生成的库链接,因为不同的ABI