2016-05-07 6 views
1

Ich versuche eine statische Bibliothek in VS2010 mit meiner DLL zu verknüpfen und aus irgendeinem Grund werden die erforderlichen Symbole nicht aufgelöst. Ich habe die Bibliothek hinzugefügt wie Sie jede Bibliothek, aber immer noch nicht gehen. Ich rufe auch die Symbole genau so auf, wie sie sein sollten, ich kopiere die Implementierung eines anderen, die funktioniert, damit sie nicht falsch liegen können. Ist es eine Einstellung, die ich vielleicht vermisse? Ich habe eine lib.exe/dumpall gemacht und alles scheint in Ordnung zu sein. Sehr frustrierend.Was sind die Gründe, die mich daran hindern, eine statische Bibliothek in VS2010 korrekt mit meiner DLL zu verbinden?

+0

Ist die Bibliothek eine C-Bibliothek? Haben die Funktionsdeklarationen aus der Bibliothek 'extern 'C'' wenn sie mit einem C++ Compiler kompiliert werden? –

+0

Nein, soweit ich weiß, ist es eine C++ - Bibliothek, die in VS2003 kompiliert wurde. Das ursprüngliche Projekt, das es verwendete, war jedoch auch ein VS2003-Projekt, aber nachdem ich es in VS2010 konvertiert hatte, funktionierte es immer noch gut. – daithioronain

+0

Hier kommt der ursprüngliche Code her. Ich versuche, ihre statische Link-Bibliothek zu verwenden. https://github.com/toots/microsoft-audio-watermarking – daithioronain

Antwort

2

Nach dem Überprüfen der Verknüpfung mit der Bibliothek, sehe ich, dass die Quelle alle C-Source-Dateien sind, und keine der Header haben extern "C" für die Funktionsdeklarationen.

Das bedeutet, wenn Sie die Header-Dateien in Ihr Projekt einfügen, haben die Funktionsdeklarationen mangled names, Namen (Symbole), die nicht mehr mit denen in der Bibliothek übereinstimmen.

Entweder Sie sollten die Funktionen, die Sie selbst verwenden, mit extern "C" deklarieren oder die Aufnahme der Header-Dateien mit extern "C" { ... } umbrechen.

+0

Vielen Dank, Sir! – daithioronain

Verwandte Themen