I am new to Qt and have one error I am unable to fix.
I have a bunch of windows (VS2005) static library file (
.lib). And I am testing if they work well with Qt. So I took the most simple library that I have. (Called
So I added
MessageBuffer.h to the
main.cpp, and added the location of those file in the
INCLUDEPATH of the
Until then everything seem fine, I can use the class and Qt IDE show all method and everything. So to me it look like it found the .h file.
Now I added the
MessageBuffer.lib (VS2005/Debug build) in the
.pro like this:
LIBS += E:/SharedLibrary/lib/MessageBufferd.lib
I have also tried the following:
win32:LIBS += E:/SharedLibrary/lib/MessageBufferd.lib LIBS += -LE:/SharedLibrary/lib -lMessageBufferd win32:LIBS += -LE:/SharedLibrary/lib -lMessageBufferd
Here is the content of my
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
They all give me the same errors: (and I get the same even if I don't include the
Running build steps for project SilverEye... Configuration unchanged, skipping QMake step. Starting: C:/Qt/2009.03/mingw/bin/mingw32-make.exe -w mingw32-make: Entering directory `C:/Documents and Settings/JP/My Documents/QTProjects/SilverEye' C:/Qt/2009.03/mingw/bin/mingw32-make -f Makefile.Debug mingw32-make: Entering directory `C:/Documents and Settings/JP/My Documents/QTProjects/SilverEye' g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug\SilverEye.exe debug/main.o debug/silvereye.o debug/moc_silvereye.o -L"c:\Qt\2009.03\qt\lib" -lopengl32 -lglu32 -lgdi32 -luser32 -lmingw32 -lqtmaind E:/SharedLibrary/lib/MessageBufferd.lib -lQtOpenGLd4 -lQtGuid4 -lQtCored4 mingw32-make: Leaving directory `C:/Documents and Settings/JP/My Documents/QTProjects/SilverEye' mingw32-make: Leaving directory `C:/Documents and Settings/JP/My Documents/QTProjects/SilverEye' debug/main.o: In function `Z5qMainiPPc': C:/Documents and Settings/JP/My Documents/QTProjects/SilverEye/main.cpp:12: undefined reference to `MessageBuffer::MessageBuffer()' C:/Documents and Settings/JP/My Documents/QTProjects/SilverEye/main.cpp:13: undefined reference to `MessageBuffer::Append(char*, int)' C:/Documents and Settings/JP/My Documents/QTProjects/SilverEye/main.cpp:17: undefined reference to `MessageBuffer::~MessageBuffer()' C:/Documents and Settings/JP/My Documents/QTProjects/SilverEye/main.cpp:17: undefined reference to `MessageBuffer::~MessageBuffer()' collect2: ld returned 1 exit status mingw32-make: *** [debug\SilverEye.exe] Error 1 mingw32-make: *** [debug] Error 2 Exited with code 2. Error while building project SilverEye When executing build step 'Make'
Can anyone help please?
Based on the question Use libraries compiled with visual studio in an application compiled by g++ (mingw) and the MSDN forum post I can't mix VC & GCC it does not appear you can link a gcc application with visual c++ compiled libraries.
The solution would be to recompile everything with the same compiler.
The MinGW FAQ discusses this problem and offers a solution:
That didn’t work. We finally removed the ordinals from the function names, which caused it to compile. But the program wouldn’t run because it couldn’t find the linked functions in the DLL. Finally, after consulting the MSDN documentation for definition files, we changed the build instructions:
It worked! To compile the project you must simply: