Es ist möglich, die DLL innerhalb eines Beispiel-Client-Programm zu kreieren , jedoch ist es danach nicht mehr möglich eine weitere Methoden der DLL aufzurufen. Dies führt zum Absturz.
Ein Frage vorweg: ist es grundsätzlich möglich eine QT-DLL mit einem in MS Visual C++ entwickelten Client-Programm aufzurufen , oder führt dies grundsätzlich zu Kompatibilitätsproblemen?
Danke für Eure Hilfe !!!
Folgendes ist die client.cpp Datei : (wenn erwünscht kann ich auch weitere Sourcecodefiles hinzufügen)
Das Programm funktioniert bis a->printOut(); der Aufruf selber führt , wie erwähnt zum Absturz. Die QT-DLL enthält jedoch gans sicher dieses Methode!!!
#include "stdafx.h"
#include "expclass.h"
#include "forcecast.h"
#include "classldr.h"
#include <malloc.h>
int main(int argc, char* argv[])
{
TCHAR szDllPath[MAX_PATH];
HMODULE hMod;
do
{
_tprintf(TEXT("Please enter the dll to load the class from:\n"));
_tscanf(TEXT("%s"), szDllPath);
// szDllPath = "qtdll");
}
while ((hMod = LoadLibrary(szDllPath)) ?
false :
_tprintf(TEXT("Failed to Load the dll. GetLastError returns: 0x%X\n"), GetLastError()));
/* Virtual Function table method */
_tprintf(TEXT("Importing by Virtual Function Table:\n\n"));
typedef QtTest* (*PFNCreate)();
_tprintf(TEXT("Creating an Object of QTTest through Default Constructor\n"));
PFNCreate pfnCreate = (PFNCreate)GetProcAddress(hMod, TEXT("CreateObject"));
QtTest* a = (pfnCreate)();
a->printOut();
//TODO
//delete a;
_tprintf(TEXT("NULL\n"));
a = NULL;
}
return 0;
}