C++ - Bibliothek verknüpfen, um C++ - dll mit g++

Ich habe gesehen, zahlreiche Fragen und Antworten zu Menschen, die mit C-Bibliotheken verknüpfen, um C++ - oder C++ - Bibliotheken verknüpfen mit C... aber ich habe eine C++ - Bibliothek Verknüpfung zu C++, und bin immer die gleichen Symptome wie Menschen, die das mischen von C und C++ zusammen (undefined reference während der Verbindung).

Dies ist mein g++ Zeile:

g++ -L C:/MyLibraries mycode.cpp -shared -o mycode.dll -lopengl32 -lglu32 -lgdi32 -lMyLibrary

Jede Antwort, die ich bisher begegnet sind Gespräche darüber, dass die folgenden Umbruch-mein-header:

#ifdef __cplusplus
extern "C" {
#endif
...
#ifdef __cplusplus
}
#endif

Jedoch, meine Bibliothek ist reines C++, 100% Klassen, keine globalen Funktionen, nichts, dass ein extern "C" kann penitrate (nicht extern "C" auf die Methoden in den Klassen, und das einwickeln der gesamte Satz von Klassen mit extern "C" macht nichts,... immer noch Undefinierte Referenzen bei der Verlinkung).

MyLibrary.lib wurde geschrieben in Visual Studio 2010. Und ich geschrieben haben, viele libs, die mit Visual Studio 2005 und 2008. Nicht ein einziger jemals benötigt extern "C" Hinzugefügt, um alle von Ihnen zu statisch zu verknüpfen, die in anderen Visual Studio-basierte Projekte. C++ - Bibliotheken verbunden, die in anderen C++ - Projekt, mit keine Probleme überhaupt.

Ist dies etwas, das Visual Studio kümmert sich um Sie, dass g++ nicht? Ich kann staticly link eine große Anzahl meiner eigenen C++ benutzerdefinierte statische libs zusammen, in anderen C++ - Projekte, und es funktioniert einfach. Ist Visual Studio nur intelligent genug, um zu entziffern, es ist ein eigenes C++ - Methode die name manglings, also ich habe noch nie in dieser bis jetzt? Aber g++ nicht wissen, was zu tun ist, zwingen, C-Namenskonventionen gefordert werden (obwohl ich bin mir 100% C++ an allen enden)?

Oder ist das problem, dass obwohl ich mit g++, die immer noch die Durchsetzung von standard-C-Regeln? Etwas falsch mit meinem g++ Kommandozeile?

Selbst auf der Suche nach einer Antwort auf MSDN zum exportieren von dll-Funktionen macht es Aussehen wie ich habe nur etwas falsch mit meinem g++ Zeile, weil die Ihre links haben Themen wie "der Export von C-Funktionen in C++ ausführbare Dateien" und "Exportieren von C++ - Funktionen in C executables", keine link "Exportieren von C++ - Funktionen in C++ ausführbare Dateien" irgendwo erwähnt... ich habe versucht, __declspec(dllexport) auf meine Funktionen, die kompiliert, aber noch nicht definiert, die Verknüpfung mit g++ noch. Irgendwelche Ideen?

Danke.

InformationsquelleAutor DiggyJohn | 2011-02-20
Schreibe einen Kommentar