Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C++ Delphi
Hi, I want to set up a CALLBACK function in a delphi code so that from a C++ dll I can call it; As of now I wrote following code:
 
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  Windows;
var
    fnSomeDllMethod:procedure() cdecl;
    m_hDll: HMODULE;
type
TCALLBACKPROC = function(arg:Pointer):HRESULT stdcall;
type
TSetCallbackFunc = procedure(_proc:TCALLBACKPROC) cdecl;
 
var
fnSetCallback:TSetCallbackFunc;
 
function CallbackProc(wEvent:DWORD;arg:Pointer;pParam:Pointer):HRESULT stdcall;
begin
         MessageBoxA(0,'delphi', 'delphi',MB_OK);
end;
 
begin
  { TODO -oUser -cConsole Main : Insert code here }
 
  begin
      begin
        m_hDll := LoadLibrary('DLLMsgBox.dll');
        fnSetCallback := GetProcAddress(m_hDll,'DisplayInMessageBox');
        fnSetCallback(CallbackProc);
        FreeLibrary(m_hDll);
      end;
  end;
 
end.
 
It is giving error as :[Error] Project1.dpr(30): Incompatible types: 'Pointer' and 'Cardinal'
 
Can any one help me?
 
Thanks
Posted 3-Apr-13 8:54am
iDebD842
Comments
bubaidada at 3-Apr-13 13:58pm
   
I am using delphi 7 simple console application
Sergey Alexandrovich Kryukov at 3-Apr-13 14:13pm
   
The problem is quite simple, but you did not show this like of code; there is no any "Cardinal" case in your sample. Just make sure you have matching types.
—SA

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Marcin Kozub 330
1 OriginalGriff 256
2 Sergey Alexandrovich Kryukov 215
3 Praneet Nadkar 197
4 Richard MacCutchan 182
0 OriginalGriff 8,048
1 Sergey Alexandrovich Kryukov 7,287
2 DamithSL 5,614
3 Manas Bhardwaj 4,986
4 Maciej Los 4,910


Advertise | Privacy | Mobile
Web04 | 2.8.1411023.1 | Last Updated 3 Apr 2013
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100