我将id3Tag库用于我的项目。我在Linux上成功设置了头文件和库并编译没有麻烦,但是我将代码移动到Windows时遇到了一些麻烦。 (我只是开始学习Windows,所以提前抱歉我可能无知)。 我的环境是Qt Creator
问题在于来自id3标记库的标题(在Linux上没有这样的问题!)我的.pro文件是:
我的错误是:
如果我不包含那个标题“id3 / tag.h”,那就完美编译了。
可能是什么原因?实际上我还没有为Windows编程。
我的步骤是:
1.我为Linux编写了部分代码.2。已复制的文件夹,其源代码已在Linux下成功编译到Windows(标题位于当前文件夹中)。
3.没有该标题的编译代码(“id3 / tag.h”)
4.添加了标题(“id3 / tag.h”)
5.从编译器中得到了大量的抱怨
提前致谢,任何提示!
答案 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个错误,但幸运的是,他们是新的。
我发现错误只是因为直觉(也许),因为互联网因这种类型错误而过载,但他们并没有对问题的原因提出任何看法。
我在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