C++에서 아래와 같이
extern "C" __declspec(dllimport) CString Square(CString d);
extern "C" __declspec(dllimport) unsigned long Square1(CString d);
extern "C" __declspec(dllimport) unsigned long Square2(CString d);
이렇게 선언한 DLL 참조 화일입니다.
델파이에서
function Square(s:string):String ;Cdecl;
function Square1(s:string):Cardinal ;Cdecl;
function Square2(s:string):Cardinal ;Cdecl;
implementation
function Square(s:string):String;external 'DllSquare.dll';
function Square1(s:string ):Cardinal ;external 'DllSquare.dll';
function Square2(s:string ):Cardinal ;external 'DllSquare.dll';
선언하고
procedure TfrmMain.Button1Click(Sender: TObject);
begin
frmmain.edit29.text:=(Square(frmmain.edit12.Text));
frmmain.edit32.Text:=inttostr(Square1(frmmain.edit12.Text));
frmmain.edit35.Text:=inttostr(Square2(frmmain.edit12.Text));
end;
이렇게 하면 정상적으로 값은 출력되지만, 화면에는
Project xxx.exe raised exception class ELnvalidPointer with message 'Invalid Pointer operation'
process stopped. use step or run to continue..
메시지가 나오면서 화면이 버그화면이 뜨면서 종료되어 버립니다.
어떻게 고쳐야 하나요?
고수님의 도움 부탁드립니다.