Q&A

  • 제발 DLL에서 Int형 인자를 넘겨주고 싶다!!!!
T.T

정말 정말 정말 죽갔습니다.

VC++로 작성된 DLL에서 왜 int 형의 인자만 들어가면 델파이가 난리 부르스인지..

왜 Access Violation에러가 나는건지....꼭 int형만....

하도 안되서 float형으로 처리를 해버렸습니다....float형은 잘 되더군요.

DLL내부에서 받기를 float형으로 받았다는 말씀입니다. int형이 안되서...



DLL내부의 함수 프로토 타입은 다음과 같구요.

void Divide4(int nCh, int vout_sel);



보통 DLL을 사용할때 implementation절 및에 아래와같이 선언해서 사용을 합니다.

procedure Divide4(nCh:Integer; vout_sel: Integer); external 'DongDi.dll' index 7;



그리고 여기저기서 줏어들어서 interface절에도 선언하고 implementation절에도 선언하고....

몇가지 다른 방법으로 해봐도 잘 안됩니다....

유독 int형만요.....float형이나 char *형 같은건 잘 됩니다.

외와 같이 델파이에서 implementation에서 선언하고 실행을 시켜보면...

'Access violation at address 100014BA in module 'DONGDI.dll'. Read of address 1084AD78'같은 에러가 납니다.

근데 신기한건 DLL에서 int형 값을 받고 처리한후 에러가 납니다. 결과는 나오니까요.



아래와 같이 'far'를 붙여주어도 똑같습니다.

procedure Divide4(nCh:Integer; vout_sel: Integer); far; external 'DongDi.dll' index 7;



저도 제발 C++로 작성한 DLL에서 int형의 데이터를 넘겨주고 싶습니다.

가르쳐 주세요~~~~



0  COMMENTS