델파이에서 만든 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로 그냥 변형없이 사용이 가능하다고 하는 데.... 솔직히 델파이는 잘 모릅니다.. 고수님들의 조언 부탁드립니다.