DLL in C++ einbinden

aklos

Cadet 4th Year
Registriert
Feb. 2010
Beiträge
117
Hi

ich will ich mein Programm eine Dll einbinden. Wie geht das kann mir jemand weiter helfen. Habe das noch nei gamacht.

Compiler Borland


MFG

aklos
 
Also du solltest nicht Borland verwenden. Benutze doch einfach Code::Blocks mit GCC oder das VS (Express-Edition).

Allgemein findest du die Einstellungen irgendwo bei den Projekteinstellungen unter Linker. Dort solltest du es hinzufügen können. Kompilierst du die DLL selbst? Du musst auch immer auf die Runtime Library achten (so heißt es bei VS), dass die übereinstimmt, sonst bekommst du Probleme.

Ohne weiter Infos kommen wir nicht weiter...

Welches OS benutzt du? Warum hast du dich für Borland entschieden? Ich benutze den Compiler nicht, daher weiß ich nicht, was man dort genau machen muss.


Gruß,

badday
 
@ badday

Ich benutze XP Prof

Die Dll habe ich nicht geschrieben die ist schon fertig.


aklos
 
Dann könnte es etwas schwierig werden mit der Runtime Library, das müsste man dann ggf. durchprobieren. Allerdings habe ich nach wie vor keine Ahnung von Borland ;)
 
wenn ich jetzt die DLL eingebunden habe ich kann ich die Jetzt in meine Code einbinden
 
Du musst über deren Funktionsnamen und -signatur (und Aufrufkonventionen) Bescheid wissen - diese findest Du in der Dokumentation der DLL.
 
Also ganz einfach:
Wenn du ne Lib fürn Borland hast (Warum eig. Borland?), dann kannste die einbinden, wie, das verrät die Dokumentation des Compilers.
Wenn du keine hast:
Code:
typedef void (__stdcall *myFunc)(int param);
myFunc *f;
void init()
{
HANDLE h=LoadLibrary("Mylib.dll");
f=(myFunc*)GetProcAddres(h,"myfunc");
}
 
Muss ich paar Header´s einbinden damit ich die Dll ausführen kann ?


aklos
 
Ganz einfach:
Es gibt 2 Fälle:

1. Fall: Du hast eine mydll.dll, eine mydll.lib und eine mydll.h
Dann musst du nur die mydll.h einbinden (#include "mydll.h") und die mydll.lib dem Linker hinzufügen

2. Fall: Du hast nur mydll.dll
Dann musst du die Funktionen als Prototyp deklarieren und einmal als globale Variable anlegen:
Code:
typedef int (*_myfunc)(int myparam);
_myfunc myfunc=0;
Dann musst du beim Starten des Programms die Funktionsvariablen mit den Werten füllen:
Code:
myfunc=(_myfunc)GetProcAddress(LoadLibraryA("mydll.dll"),"myfunc");
 
ok danke

die erste Variante hat geklappt

jetzt will ich noch wissen wie man die Funktion die in der Dll sind anwenden kann

aklos
 
Zurück
Oben