Wie benutzt man eine Dll?
-
Hallo!
Ich habe eine Dll und eine Headerdatei bekommen, die ich nutzen möchte.
Nun habe ich hier im Forum diesen Link gefunden: http://www.c-plusplus.net/forum/viewtopic-var-t-is-2342.htmlBeim Nachlesen in der MSDN bin ich auf dieses Beispiel gestoßen:
// File: RUNTIME.C // A simple program that uses LoadLibrary and // GetProcAddress to access myPuts from MYPUTS.DLL. #include <stdio.h> #include <windows.h> typedef VOID (*MYPROC)(LPTSTR); VOID main(VOID) { HINSTANCE hinstLib; MYPROC ProcAdd; BOOL fFreeResult, fRunTimeLinkSuccess = FALSE; // Get a handle to the DLL module. hinstLib = LoadLibrary("myputs"); // If the handle is valid, try to get the function address. if (hinstLib != NULL) { ProcAdd = (MYPROC) GetProcAddress(hinstLib, "myPuts"); // If the function address is valid, call the function. if (fRunTimeLinkSuccess = (ProcAdd != NULL)) (ProcAdd) ("message via DLL function\n"); // Free the DLL module. fFreeResult = FreeLibrary(hinstLib); } // If unable to call the DLL function, use an alternative. if (! fRunTimeLinkSuccess) printf("message via alternative method\n"); }
Leider kriege ich nun den Fehler
Kompilierung läuft... com_test2.cpp D:\Visual Studio Projects\com_test2\com_test2.cpp(96) : error C2065: 'MYPROC' : nichtdeklarierter Bezeichner D:\Visual Studio Projects\com_test2\com_test2.cpp(96) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'ProcAdd' D:\Visual Studio Projects\com_test2\com_test2.cpp(96) : error C2065: 'ProcAdd' : nichtdeklarierter Bezeichner D:\Visual Studio Projects\com_test2\com_test2.cpp(107) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'GetProcAddress' Fehler beim Ausführen von cl.exe.
Was ist da falsch und wie mache ich das richtig?
Danke!
-
Klappt bei mir.
-
In den Fehlermeldungen steht ja auch Zeile 96. Also hast du hier nicht den richtigen Quelltext gepostet.
-
Ups, man sollte das Beispiel wohl komplett übernehmen.
Ich hab das aus der Main in die InitInstance kopiert - aber die Includes vergessen.Danke, ich guck mal, ob ich jetzt das zum Laufen kriege.
-
Sieht nciht so aus.
Ich will nun eine Funktion der Dll aufrufen, aber ich bekomme einen Fehler.
// If the function address is valid, call the function. if (fRunTimeLinkSuccess = (ProcAdd != NULL)) (ProcAdd)(1, 9600, 'E', 7, 1, 0, 0);
D:\Visual Studio Projects\com_test2\com_test2.cpp(115) : error C2197: 'void (__cdecl *)(char *)' : Zu viele Parameter uebergeben