Seite 1 von 1

DLL Laden innerhalb einer Qt Umgebung

Verfasst: 15. März 2008 20:07
von pospiech
Die Frage ist vermutlich Qt unspezifisch, aber ich würde gerne Wissen wie man das Problem innerhalb einer Nicht-MFC/Win32 Umgebung löst.

Mein Problem ist, dass ich eine Klasse habe die eine DLL eines komerziellen Herstellers lädt. Diese Klasse hat innerhalb eines MFC basierten Projektes wunderbar funktioniert.
Jetzt möchte ich sie allerdings innerhalb eines Qt basierten Projektes benutzen und muss feststellen dass einige Aufrufe offenbar MFC/win32 spezifisch sind.

Und zwar benutze ich:

Code: Alles auswählen

...
protected:
	HINSTANCE DLLHandle;
	typedef int (__stdcall *fn_MMC_COM_open)(int 
public:
	fn_MMC_COM_open			MMC_COM_open;
...

Code: Alles auswählen

/* Load the DLL and get the addresses of the functions */
int LoadDLL()
{
	
    DLLHandle = LoadLibrary("MMC413.DLL");
	
    MMC_COM_open		= reinterpret_cast<fn_MMC_COM_open>(::GetProcAddress(DLLHandle, TEXT("MMC_COM_open")));
...
das führt aber zu den Fehlern (in Visual Studio)
error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'DLLHandle'
error C2039: 'FreeLibrary': Ist kein Element von '`global namespace''
error C2065: 'DLLHandle': nichtdeklarierter Bezeichner
error C3861: "FreeLibrary": Bezeichner wurde nicht gefunden.
error C3861: "LoadLibrary": Bezeichner wurde nicht gefunden.
error C2039: 'GetProcAddress': Ist kein Element von '`global namespace''
error C3861: "GetProcAddress": Bezeichner wurde nicht gefunden.
error C3861: "TEXT": Bezeichner wurde nicht gefunden.
wie konvertiere ich das nun in Framework unspezifischen Code?

Matthias

Verfasst: 15. März 2008 22:18
von Christian81
HINSTANCE, LoadLibrary, ... sind nicht definiert - also korrekten Header includieren. Hat aber nichts mit Qt zu tun.
Ausserdem gibt es QLibrary