Здравствуйте, JekSoft, Вы писали:
JS>Здравствуйте!
Здравствуй!
JekVOID_INT_INT_FUNC уже означает "указатель на функцию..."
Ты же зачем-то принимаешь в SetCallbacks тип
JekVOID_INT_INT_FUNC**
(указатель на указатель на указатель на функцию)
А хранишь
JekVOID_INT_INT_FUNC*
(указатель на указатель на функцию)
Тебе нужно исправить код так:
JS>
JS>typedef void (PASCAL* JekVOID_INT_INT_FUNC_PTR)(int, int);
JS>static void LoadWindowLibrary()
JS>{
JS> lib = LoadLibrary(dllFileName);
JS> if (lib != NULL)
JS> {
JS> InitMainWindow = (JekVOID_VOID_FUNC)GetProcAddress(lib, "InitMainWindow");
JS> SetCallbacks = (JekVOID_LPVOID_FUNC)GetProcAddress(lib, "SetCallbacks");
JS> SetCallbacks(&MoveTracker);
JS> }
JS>}
JS>extern "C" void static PASCAL MoveTracker1(int dx, int dy)
JS>{
JS> MessageBox(NULL, "Test", "Test", MB_ICONINFORMATION);
JS> pMyPlugin->MoveTracker(dx, dy);
JS>}
JS>
JS>- MFC-библиотека:
JS>
JS>JekVOID_INT_INT_FUNC_PTR MoveTracker; // объявлена в MainForm.h внутри класса формы.
JS>extern "C" void PASCAL EXPORT SetCallbacks(JekVOID_INT_INT_FUNC_PTR moveTracker)
JS>{
JS> AFX_MANAGE_STATE(AfxGetStaticModuleState())
JS> MessageBox(NULL, "MoveTracker", "Start", MB_ICONERROR);
JS> form.MoveTracker = moveTracker;
JS> if (form.MoveTracker == NULL)
JS> MessageBox(NULL, "MoveTracker", "Error", MB_ICONERROR);
JS> else
JS> MessageBox(NULL, "MoveTracker", "End", MB_ICONERROR);
JS>}
JS>void CMainForm::OnBnClickedButton2()
JS>{
JS> AFX_MANAGE_STATE(AfxGetStaticModuleState())
JS> (*MoveTracker)(0, 10000);
JS> // MoveTracker(0, 10000);
JS> // Можно и так, и так.
JS>}
JS>