Referenzieren einer DLL auf Visual Studio ohne lib-Datei

7

Ich habe noch nie eine DLL benutzt, bevor ich mit ihr so ​​nackt war ...

Ich musste meinem Projekt eine Bibliothek eines Drittanbieters hinzufügen und sie liefern nur eine DLL-Datei (keine .lib)

Ich habe die DLL zum Projekt hinzugefügt, indem ich auf die Property-Seite des Projekts unter Allgemeine Eigenschaften - & gt; Referenzen - & gt; Neue Referenz hinzufügen

Ich kann die DLL unter dem Ordner "Externe Abhängigkeiten" im Projektmappen-Explorer sehen, also denke ich, dass sie korrekt aufgenommen wurde.

Aber wie referenziere ich die DLL? Wenn ich versuche, eine Instanzvariable (z. B. MCC :: iPort :: ASCII iPort) hinzuzufügen, um auf die DLL-Klasse zuzugreifen, erhalte ich den Fehler: Name gefolgt von '::' muss ein Klassen- oder Namensraumname sein, aber ich weiß das der Klassenname kann ich in der DLL-Info unter Externe Abhängigkeiten sehen.

    
Heather 29.07.2015, 18:53
quelle

2 Antworten

16

Die einzige Möglichkeit, auf eine leere DLL ohne eine .lib-Datei zuzugreifen, besteht darin, die DLL explizit mit LoadLibrary() , erhalten Sie Zeiger auf die exportierten Funktionen, auf die Sie zugreifen möchten mit GetProcAddress() und dann diese Zeiger auf die richtige Funktionssignatur anwenden. Wenn die Bibliothek C ++ - Funktionen exportiert, werden die Namen, die Sie an GetProcAddress() übergeben müssen, fehlerhaft sein. Sie können die exportierten Namen mit dumpbin /exports your.dll auflisten.

%Vor%

Wie von anderen bemerkt wurde, kann eine LIB-Datei erstellt werden. Holen Sie sich die Liste der exportierten Funktionen aus dumpbin /exports your.dll :

%Vor%

Geben Sie die Namen in eine DEF-Datei ein:

%Vor%

Machen Sie nun die LIB-Datei:

%Vor%

Für Fälle, in denen der Name entweder durch C ++ name mangling oder 32-bit stdcall Aufrufkonvention geschmückt wurde, kopieren und fügen Sie einfach die Namen dumpbin mapped, mangling und all.

ein     
Khouri Giordano 29.07.2015, 20:48
quelle
5

Wenn Sie keine .lib Datei haben, können Sie eine aus der .dll erstellen:

Ссылка

Ich hoffe, das hilft.

    
Richard Vu 29.07.2015 22:23
quelle

Tags und Links