Ich evaluiere eine nicht dokumentierte Software. Wenn ich ein Beispielprojekt erstelle, wird ein Linkerfehler angezeigt, der wie folgt aussieht:
Fehler LNK2019: ungelöstes externes Symbol
Es gibt nicht viele lib-Dateien mit dieser App, daher kann ich dieses Problem mit Versuch und Irrtum lösen, aber ich weiß, dass es eleganter ist, dieses Problem zu lösen.
In der Java-Welt würde ich FOO * .jar suchen, um das Glas zu finden, und ich suche nach dem C ++ - Analogon. Ich arbeite mit C ++ - Code in Visual Studio 2005.
Ich vermute, dass das Dienstprogramm lib.exe mit der Option / LIST die Informationen abrufen kann, aber ich war bisher nicht erfolgreich. Es wird nur Folgendes gedruckt:
Microsoft (R) Library Manager Version 8.00.50727.762 Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten. granite50.dll granite50.dll granite50.dll granite50.dll ...
Irgendwelche Vorschläge?
quelle
dumpbin.exe
vonPowershell
- stackoverflow.com/questions/477387/cannot-find-dumpbin-exe/…Mehr als eine Sache kann hier Ihr Problem sein. Ich bin mir nicht sicher, ob ein Blick in die lib-Datei der beste Weg ist, dies zu lösen, IMHO ... Allerdings ist die Datei DUMPBIN.exe wahrscheinlich das Werkzeug, nach dem Sie suchen. Verwenden Sie es über die Befehlszeile, stellen Sie jedoch sicher, dass Ihre Pfade festgelegt sind, oder verwenden Sie die "Visual Studio-Eingabeaufforderung", die VS für Sie in Ihrem VS-Startmenü installiert.
quelle
Wenn Sie eine DLL haben und diese in Ihrem Code verwenden möchten,
__declspec(dllimport)
können Sie die erforderliche LIB-Datei einfach erstellen, wenn Sie eine DEF-Datei für die DLL haben:das schafft mydll.lib
Dieser Befehl sollte in der Visual Studio SDK-Eingabeaufforderung ausgeführt werden.
Eine DEF-Datei kann sehr einfach manuell geschrieben werden, wenn Sie keine haben: Sie öffnen die DLL in DependencyWalker ( http://www.dependencywalker.com ) und wählen "Speichern unter" -> "Text mit Import- / Exportlisten". und haben die Namen und Ordnungszahlen aller exportierten Funktionen in einer txt-Datei wie folgt:
Der Rest ist schnell erledigt. Erstellen Sie eine DEF-Datei mit diesem Format:
Die Zahl hinter dem @ ist die Ordnungszahl.
PD: Dependency Walker können sogar undecorate kryptischen Namen von C ++ Exporte wie
quelle
Dies funktionierte mit einem visuellen C ++ Express 9 .lib:
dumpbin.exe -headers clangParse.lib | findstr / c: "COMDAT"> clangParse-exports.txt
oder dumpbin.exe -headers clangParse.lib | findstr / c: "sym ="> clangParse-exports.txt
danke d.shawley
quelle
Öffnen Sie die Visual Studio-Eingabeaufforderung
dumpbin / all Effects11.lib> D: \ 1.txt
quelle