//dll头文件 #include <Windows.h> #include <stdio.h> #include <process.h> #define MYLIBAPI extern "C" __declspec(dllexport); typedef int (WINAPI *PFCALLBACK)(); MYLIBAPI void WINAPI TestCallBack(PFCALLBACK Func) ;
//dll源文件 #include "stdafx.h" #include "CallbackDll.h" PFCALLBACK gCallBack = NULL; int WINAPI CBFunc(int Param1,int Param2); ULONG WINAPI Thread1(LPVOID Param); void WINAPI TestCallBack(PFCALLBACK Func) { if(Func == NULL) return; gCallBack = Func; DWORD ThreadID = 0; HANDLE hThread = CreateThread(NULL, NULL, Thread1, LPVOID(0), NULL, &ThreadID); return; } ULONG WINAPI Thread1(LPVOID Param) { int Step = 1; (*gCallBack)(); return 0; }
//.cpp文件 #include "stdafx.h" #include <Windows.h> #include <stdio.h> #include <process.h> #include "../CallbackDll/CallbackDll.h" int WINAPI CBFunc(); int _tmain(int argc, _TCHAR* argv[]) { TestCallBack(CBFunc); Sleep(100); return 0; } int WINAPI CBFunc() { printf(_T("ddddddddddddddddddddddd\n")); return 1; }