Linker Probleme mit Visual Studio
-
Hallo zusammen,
ich habe in ein C++ Visual Studio Projekt eine .lib Datei mit zugehörigen header dateien eingebunden. Die .lib Datei der Bibliothek habe ich nach Anleitung selbst für Visual Studio gebaut (C Quellcode). Problem ist nur, dass ich Linker Probleme habe und zwar in folgender Form:
linalg.obj : error LNK2019: unresolved external symbol __imp__gan_mat_free referenced in function _wmain
Die Funktion "gan_mat_free" ist auf jeden Fall im ursprünglichen C-Code enthalten. Irgendwie scheint was mit der .lib Datei nicht zu stimmen oder das Präfix "__imp__" wird falsch interpretiert. Hab aus diversen posts mit ähnlichen Problemen gelesen dass die User32.lib eingebunden werden sollte. Hat leider nichts gebracht, muß aber auch dazusagen, dass ich schon etwas schwimme bei dieser Thematik.
Kennt jemand das Problem oder hat evtl. jemand eine Ahnung wie man das Problem beheben kann?
Der Pfad zur .lib-Datei ist auf jeden Fall in "Additional Library Directories" und die .lib selbst in "Additional Dependencies" eingetragen. Über "Additional Include Files" sind die header files referenziert. Sollte also alles passen.
Vielen Dank schonmal!Gruß
-
...also, es hat sich mittlerweile das Problem gelöst. Ich dachte mir, ich poste einfach mal an was es letztendlich gelegen hat, falls auch nochmal jemand das Problem hat.
Wie gesagt, lag die Bibliotek als Quellcode vor und mußte erst noch gebaut werden. Für MSVC mußte man - je nachdem ob man eine statisch oder dynamisch gelinkte Bibliotek haben wollte - den Preprozessor zusätzlich konfigurieren. Was ich nicht wußte war, dass wenn man eine statisch gelinkte Bibliothek baut und verwendet, man die Preprozessor-Einstellungen ebenso in dem Projekt machen muß, in dem man die .lib-Datei verwendet. Sonst kennt der Linker nicht die Präfixe der Symbole und kann somit auch nicht linken - wenn ich das richtig verstanden habe. Damit war mein Problem gelöst.
Ich hoffe es hilft vielleicht jemand anderes mal weiter. Sowas kostet immer unangenehm viel Zeit und Nerven, wenn man nicht weiß woran es liegen könnte.