我是Qt的新手,有一个我无法解决的错误。
我有一堆windows(VS2005)静态库文件(.lib
)。我正在测试它们是否与Qt配合良好。所以我选择了最简单的库。 (称为MessageBuffer
)。
所以我将MessageBuffer.h
添加到main.cpp
,并在INCLUDEPATH
的{{1}}中添加了这些文件的位置。
在此之前一切似乎都很好,我可以使用该类和Qt IDE显示所有方法和所有内容。所以对我来说,它看起来像找到了.h文件。
现在我在.pro
中添加了MessageBuffer.lib
(VS2005 / Debug版本),如下所示:
.pro
我也尝试了以下内容:
LIBS += E:/SharedLibrary/lib/MessageBufferd.lib
以下是我的win32:LIBS += E:/SharedLibrary/lib/MessageBufferd.lib
LIBS += -LE:/SharedLibrary/lib -lMessageBufferd
win32:LIBS += -LE:/SharedLibrary/lib -lMessageBufferd
文件的内容:
.pro
他们都给了我同样的错误:(即使我不包括QT += opengl
TARGET = SilverEye
TEMPLATE = app
INCLUDEPATH += E:/SharedLibrary/MessageBuffer
SOURCES += main.cpp \
silvereye.cpp
HEADERS += silvereye.h
FORMS += silvereye.ui
OTHER_FILES +=
win32:LIBS += E:/SharedLibrary/lib/MessageBufferd.lib
,我也会得到同样的错误)
.lib
有人可以帮忙吗?
答案 0 :(得分:5)
根据问题Use libraries compiled with visual studio in an application compiled by g++ (mingw)和MSDN论坛帖子I can't mix VC & GCC,您似乎无法将gcc应用程序与visual c ++编译库链接。
解决方案是使用相同的编译器重新编译所有内容。
答案 1 :(得分:4)
MinGW FAQ讨论了这个问题并提供了解决方案:
那不起作用。我们最终从函数名中删除了序数,这导致它编译。但程序无法运行,因为它无法在DLL中找到链接的函数。最后,在查阅定义文件的MSDN文档后,我们更改了构建指令:
有效!要编译项目,您必须简单地:
取自: http://blog.outofhanwell.com/2006/05/01/linking-msvc-libraries-with-mingw-projects/
答案 2 :(得分:0)
我假设您在另一个有问题的应用程序中使用了MessageBuffer库。该错误看起来无法找到库或者没有导出MessageBuffer类。
您是否尝试在专业文件中将-l放在库的前面?
win32:LIBS += -lE:/SharedLibrary/lib/MessageBufferd.lib
查看我的其他answer。我添加了另一个答案,因为我不想让这个答案比现在更混乱。
到目前为止尝试过: