cdecl 가 아니라 stdcall을 써도 되나여??
function CallbackFunc(index:integer): Boolean; stdcall;
이렇게 썼더니 인덱스값이 이상하게 나오네요..
정재만 님이 쓰신 글 :
: procedure CallbackFunc(index:integer); cdecl;
:
: 하심이~
:
: 주성환 님이 쓰신 글 :
: : 안녕하세요..
: : 죄송하지만 델파이를 전혀 모르는 저로서는 해결 방법이 없어 이렇게 글을 올립니다.
: : 시급한 문제라..^^
: :
: : VC2008을 이용하여 DLL을 만들었습니다.
: : DLL을 3가지 사용하는데
: : test1.dll, test2.dll, test3.dll 이렇게 3개를 만들고
: :
: : 종속성은 test1.dll이 test2.dll을 종속하고 test2.dll은 test3.dll을 종속하여
: : 사용자가 test3.dll의 함수만 사용하면 되는데요..
: :
: : test3.dll에서 사용자 정의 콜백함수를 사용하기 위해 다음과 같이 선언했습니다.
: :
: : extern "C" __declspec(dllexport) BOOL ExecuteTest3(LPVOID lpCallbackFunc);
: :
: : -> LPVOID lpCallbackFunc에는 응용에서 사용할 콜백 함수
: : void CallBack(int nIndex) 형식의 함수를 넘겨주면 됩니다.
: :
: : test1.dll내부에 있는 쓰레드에서 콜백함수에 0~99까지의 인덱스를 순차적으로 넘겨주면 되는 테스트 프로그램인데
: : MFC에서 응용프로그램을 만들어서 테스트한 결과 0~99까지 순차적으로 인덱스를 받아옵니다.
: :
: : 하지만 델파이로 테스트한 결과 access violence가 발생합니다.
: :
: : 델파이로 응용프로그램을 만들때 어떻게 콜백함수를 만들어 VC++에서 만든 DLL에 삽입하는지
: :
: : 부탁드립니다.
: :
: : 테스트용 dll 파일을 첨부합니다.
|