Probleme mit dem Linken von DevIL unter CMake i.V.m MinGW
Verfasst: 23.08.2010, 10:23
Hallo zusammen,
aktuell bin ich mit der Windowsportierung unserer Linux-Sourcen beschäftigt. Unter Windows nutze ich MSYS i.V.m. MinGW. Nun bin ich dabei ein CMake Skript für die Anbindung der DevIL Library zu schreiben. Hierfür habe ich das Original CMakeSkript um die Berücksichtiung der MinGW Installationspfade erweitert. Klappt auch soweit.
Ich habe die DevIL .lib und .a Files in meiner MinGW Instalaltion im lib-Verzeichnis, die dlls im bin Verzeichnis abgelegt. Mein Problem ist nun, dass CMake grundsätzlich die dll Dateien lokalisiert sobald ich find_library() aufrufe:
Damit kommt jedoch der Linker nicht klar und kann die Referenzen nicht auflösen:
Wie man sieht bindet er DevIL.dll anstelle von -ldevil ein. Nehme ich die dlls raus aus der MinGW Datei, dann linkt er korrekt und baut auch korrekt die sourcen durch:
Aber in diesem Fall fliegt ein Exception beim Starten der Applikation, weil er die Dlls nicht finden kann. Plaziere ich nun die DLL's im Applikationsroot, System32 oder MinGW/bin Verzeichnis startet die Applikation fehlerfrei. Dann fliegt mir allerdings wieder alles beim nächsten Build um die Ohren, weil CMake wieder die dll's lokalisiert ...
Weiß zufällig jemand einen Rat? Ich habe keine Ahnung mehr was ich hier noch machen kann... Übrigens denke ich nicht, dass es daran liegt, dass ich vorkompilierte Libraries benutze denn wenn ich ohne CMake arbeite und die DevIL Libraries direkt beim Kompilieren mit angebe läufts sauber durch...
Gruß
Christian
aktuell bin ich mit der Windowsportierung unserer Linux-Sourcen beschäftigt. Unter Windows nutze ich MSYS i.V.m. MinGW. Nun bin ich dabei ein CMake Skript für die Anbindung der DevIL Library zu schreiben. Hierfür habe ich das Original CMakeSkript um die Berücksichtiung der MinGW Installationspfade erweitert. Klappt auch soweit.
Ich habe die DevIL .lib und .a Files in meiner MinGW Instalaltion im lib-Verzeichnis, die dlls im bin Verzeichnis abgelegt. Mein Problem ist nun, dass CMake grundsätzlich die dll Dateien lokalisiert sobald ich find_library() aufrufe:
Code: Alles auswählen
-- OpenGL render API found.
-- Detected OpenGL path is : glu32;opengl32
-- Found DevIL includes at: C:/mingw/include/IL
-- Found DevIL library at: C:/mingw/bin/DevIL.dll
Code: Alles auswählen
Linking CXX executable DevILTest.exe
/C/binrev/development/mingw/bin/g++.exe "CMakeFiles/DevILTest.dir /winmain.cpp.obj" -o DevILTest.exe -Wl,--out-implib,libDevILTest.dll.a -Wl,--ma
32 -lopengl32 DevIL.dll -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32
CMakeFiles/DevILTest.dir/winmain.cpp.obj:winmain.cpp:(.text+0xcc8): undefined reference to `_imp__ilOriginFunc@4'
CMakeFiles/DevILTest.dir/winmain.cpp.obj:winmain.cpp:(.text+0xce0): undefined reference to `_imp__ilEnable@4'
CMakeFiles/DevILTest.dir/winmain.cpp.obj:winmain.cpp:(.text+0xcf9): undefined reference to `_imp__ilSetInteger@8'
Code: Alles auswählen
-- Detected OpenGL path is : glu32;opengl32
-- Found DevIL includes at: C:/mingw/include/IL
-- Found DevIL library at: C:/mingw/lib/DevIL.lib
Weiß zufällig jemand einen Rat? Ich habe keine Ahnung mehr was ich hier noch machen kann... Übrigens denke ich nicht, dass es daran liegt, dass ich vorkompilierte Libraries benutze denn wenn ich ohne CMake arbeite und die DevIL Libraries direkt beim Kompilieren mit angebe läufts sauber durch...
Gruß
Christian