Problem mit Funktion in DLL
-
Hallo,
ich habe ein Problem mit einer Funktion in einer DLL. Ich möchte die DLL über LoadLibrary einbinden und versuche die Funktion über GetProcAddress zu bekommen. Leider bekomme ich immer die Fehlermeldung (GetLastError()), dass die Funktion nicht gefunden wird.
Meine DLL-Datei:
#include <stdio.h> #include "cde.h" int DLLMain(void) { printf("In DLL"); return(true); } CSpracheDE *MachObjekt(void) { return(new CSpracheDE()); }
Was passt daran nicht
-
Muss man DLL-Funktionen nicht explizit exportieren?
-junix
-
@junix
Meinst du extern "C" ??
-
Also ich hab jetzt die DLL-Datei umgeschrieben mit Angabe von __export. Leider hat es absolut nichts gebracht. Ich poste nochmal die veränderte DLL-Datei und das Testprogramm, die die DLL hernimmt.
DLL-Datei:
#include <stdio.h> #include "cde.h" CSpracheDE * __export __stdcall MachObjekt(void) { return(new CSpracheDE()); }
Testprogramm:
#include <stdio.h> #include <conio.h> #include <windows.h> #include "sprachen\sprache.h" typedef ISprache* (__stdcall *objFunc)(void); int main(void) { HINSTANCE lib; objFunc addr; ISprache *sprache; printf("Test\n"); lib=LoadLibrary("de.dll"); if(lib) { addr=(objFunc)GetProcAddress(lib, "MachObjekt"); if(addr) { sprache=(addr)(); printf("%s\n", sprache->HolID()); printf("%s\n", sprache->HolTestText()); } else { printf("FUNC?!? - %ld", GetLastError()); } FreeLibrary(lib); } else { printf("DLL?!? - %ld", GetLastError()); } getch(); }
Kennt sich denn niemand hier mit DLLs aus??
-
probiers mit extern c weil sonst das name mangling zuschlägt
-
Vielen Dank, genau daran hats gelegen.
-
Hallo,
ein Standard-C++ Problem ist das aber nicht.Im Sinne der besseren Suchergebnisse verschiebe ich den zwar bereits abgeschlossenen Thread doch mal nach WinAPI.