Dllimport von Callback Funktion
-
Hallo
ich will in einer Win32 Konsolenanwendung eine DLL laden.
Die Besonderheit ist, die DLL Funktion beinhaltet eine Callback-Funktion.Die Funktion wird in der DLL so öffentlich gemacht:
typedef DWORD (*fpCallBack1)(DWORD index); extern "C" __declspec(dllexport)DWORD __stdcall Test(fpCallBack1 _pFunc, DWORD input);
und jetzt soll sie in einer anderen Anwendung eingelesen werden, damit sie hier zur Verfügung steht.
extern "C" __declspec(dllimport)DWORD Test(void (*_pFunc), DWORD input); DWORD *CB (int value) { printf("%d\n", value); return 0; } int _tmain(int argc, _TCHAR* argv[]) { Test(CB,1); return 0;; }
Was mach ich hier falsch - als Fehlermeldung kommt:
Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__Test" in Funktion "_wmain".
Fehler 2 fatal error LNK1120: 1 nicht aufgelöste externe Verweise. ...\Debug\Debug.exe Debugwobei ich damit nichts anfangen kann.
Ist die Implementierung bzw der Import der CALLBACK Funktion überhaupt korrekt ?Gruss
Bernd
-
Test ist nirgends definiert. Linkst du zur Ladezeit oder Laufzeit? Falls du letzteres haben willst musst du das Modul und die exportierte Funktion natürlich erst laden:
http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms683212(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms683152(VS.85).aspx
-
Das ist der Rest der "Test" Funktion aus der DLL.
Die soll auch statisch gelinkt sein.
Die lib der Dll ist mit Include eingebunden.Die DLL wird auch einwandfrei übersetzt eine Anbindung an DotNet funktioniert auch. Nur eben in C++ nicht.
fpCallBack1 ReceiveData; DWORD __stdcall Test(fpCallBack1 _pFunc, DWORD input) { int index = 0; ReceiveData = _pFunc; ReceiveData(input); index = 99; return index; }
-
Problem hat sich soeben erledigt.
Habe das Projekt nochmal neu erstellt - mit gleichen Einstellungen - und siehe da es läuft.