Q&A

  • 델파이에서 만든 dll을 vc++에서 사용하려 합니다
델파이에서 만든 dll을 동적로딩해서 vc++ 5.0에서 사용하려 합니다. 어떻게 해서 dll을 로딩시키고 자료까지는 얻었는 데 함수만 리턴하면 프로그램이 죽어버립니다. 아마도 내부에서 사용하는 자료형의 크기가 달라서 그런 것 같습니다. 어떻게 방법이 없을까요???



델파이 함수의 원형과 record는 다음과 같습니다.

function ReadAppInfo(var AppData: TAppInfoType): integer; stdcall;



TAppInfoType = record

JUMIN_NO : array[0..13] of Char;

CHECK_DIGIT : array[0..1] of Char;

SABUN : array[0..10] of Char;

HOSTPWD : array[0..8] of Char;

BSNS_CLS_CD : array[0..3] of Char;

BSNS_CLS_NAME: array[0..20] of Char;

DEPT_CD : array[0..4] of Char;

DEPT_NAME : array[0..40] of Char;

USER_NAME : array[0..25] of Char;



그리고, vc에서 사용한 함수원형과 구조체는 다음과 같습니다.

typedef struct tagSSM_Menu_Data {

char juminno[14];

char check_digit[2];

char sabun[11];

char hostpwd[9];

char bsns_cls_cd[4];

char bsns_cls_name[21];

char dept_cd[5];

char dept_name[41];

char user_name[26];

} SSMDATA, *LPSSMDATA;



typedef int (* SSMMENU)(SSMDATA *stSSMData);

extern "C" SSMMENU funSSMMenu;



...

SSMMENU funSSMMenu;



if(!(m_hSSMInstance = ::LoadLibrary(strDir))||

!(funSSMMenu = SSMMENU(::GetProcAddress(m_hSSMInstance, "ReadAppInfo"))))



문서를 보니 record->struct로, char->char, int->int로 그냥 변형없이 사용이 가능하다고 하는 데.... 솔직히 델파이는 잘 모릅니다.. 고수님들의 조언 부탁드립니다.



0  COMMENTS