Expandable
2008-07-10, 15:58:44
Hallo,
ich versuche gerade, eine static library zu erstellen und in einem anderen C++-Projekt wieder einzubinden, scheitere dabei aber grandios.
Ich erstelle eine neue Solution, darin ein Win32 static library Projekt (empty). Ich füge eine Header- und eine Source-Datei ein, mit einer ganz simplen Klasse:
class Test
{ public: Test() { i = 10; }
int i;
int GetI() { return i; }
};
Ich erstelle ein zweites Projekt, füge die lib-File in den Linkersettings hinzu und erstelle in der Mainfunktion einen Pointer: Test* t = new Test(); int i = t->GetI();
Wenn ich im zweiten Projekt den Common Language Runtime support (/clr) aktiviere, gibt es keine Probleme. Wenn ich allerdings eine unmanaged Anwendung will, kommt beim Starten (egal ob Debug oder Release) der Fehler: "This application has failed to start because MSVCR90D.dll was not found. Re-installing the application may fix this problem". Das passiert auch unter Visual Studio 2005 Prof, genau das gleiche (auch dass es mit CLR geht).
Ich habe nun versucht, mit Multi-threaded Debug (/MTd) statt Multi-threaded Debug DLL (/MDd) zu compilen (sowohl die lib als auch die Anwendung). Resultat: Es wird gestartet. Wenn ich keinen Pointer auf das Objekt erstelle, funktioniert's auch bestens. Aber sobald ich new aufrufe, beendet sich die Anwendung ohne irgendeinen Fehler oder sonst etwas.
Ich habe jetzt schon Stunden im Internet gesucht, aber nichts gefunden, was mir weitergeholfen hat. Ich habe mich auch Wort für Wort an das MSDN-Tutorial für static libs gehalten. Es geht einfach nicht. Komisch ist, dass ich andere Projekte mit static libs problemlos compilen kann, bloß mein eigenes nicht.
Irgendeine Idee? Bin echt ratlos.
Danke.
ich versuche gerade, eine static library zu erstellen und in einem anderen C++-Projekt wieder einzubinden, scheitere dabei aber grandios.
Ich erstelle eine neue Solution, darin ein Win32 static library Projekt (empty). Ich füge eine Header- und eine Source-Datei ein, mit einer ganz simplen Klasse:
class Test
{ public: Test() { i = 10; }
int i;
int GetI() { return i; }
};
Ich erstelle ein zweites Projekt, füge die lib-File in den Linkersettings hinzu und erstelle in der Mainfunktion einen Pointer: Test* t = new Test(); int i = t->GetI();
Wenn ich im zweiten Projekt den Common Language Runtime support (/clr) aktiviere, gibt es keine Probleme. Wenn ich allerdings eine unmanaged Anwendung will, kommt beim Starten (egal ob Debug oder Release) der Fehler: "This application has failed to start because MSVCR90D.dll was not found. Re-installing the application may fix this problem". Das passiert auch unter Visual Studio 2005 Prof, genau das gleiche (auch dass es mit CLR geht).
Ich habe nun versucht, mit Multi-threaded Debug (/MTd) statt Multi-threaded Debug DLL (/MDd) zu compilen (sowohl die lib als auch die Anwendung). Resultat: Es wird gestartet. Wenn ich keinen Pointer auf das Objekt erstelle, funktioniert's auch bestens. Aber sobald ich new aufrufe, beendet sich die Anwendung ohne irgendeinen Fehler oder sonst etwas.
Ich habe jetzt schon Stunden im Internet gesucht, aber nichts gefunden, was mir weitergeholfen hat. Ich habe mich auch Wort für Wort an das MSDN-Tutorial für static libs gehalten. Es geht einfach nicht. Komisch ist, dass ich andere Projekte mit static libs problemlos compilen kann, bloß mein eigenes nicht.
Irgendeine Idee? Bin echt ratlos.
Danke.