오늘 조금 희한한 경우를 발견했습니다.
다름이 아니라 VC++ 아래와 같이 정의한 함수를
extern "C" DLL_EXPORT
void DGN2NSQ(const char* pExportFilePath,const char* pImportFilePath , const char* pIniFilePath )
{
... 생략
}
VB에서 아래와 같이 선언한 뒤 VB CODE를 컴파일해도 아무런 에러를 발생시키지 않고 컴파일이 성공되었습니다.
매개 변수 하나를 선언하지 않았는데도 말이죠.
Declare Sub DGN2NSQ Lib "IEManager.dll" _
(ByVal ExportFilePath As String, ByVal ImportFilePath As String)
VC++의 함수에서 디버깅을 해보면 제일 마지막의 값은 쓰레기 값이 넘어오는 것을 확인할 수 있었습니다.
DLL함수 호출 규약을 __stdcall으로 바꾸어 테스트를 한번 해 보아야 겠습니다.
- 결론 :
VB는 똑똑하게(?) 인자 갯수를 다르게 선언하고 또 사용하고 해도 컴파일때 에러를 내지 않습니다.
뭐 이런게 다 있을까요?
다름이 아니라 VC++ 아래와 같이 정의한 함수를
extern "C" DLL_EXPORT
void DGN2NSQ(const char* pExportFilePath,const char* pImportFilePath , const char* pIniFilePath )
{
... 생략
}
VB에서 아래와 같이 선언한 뒤 VB CODE를 컴파일해도 아무런 에러를 발생시키지 않고 컴파일이 성공되었습니다.
매개 변수 하나를 선언하지 않았는데도 말이죠.
Declare Sub DGN2NSQ Lib "IEManager.dll" _
(ByVal ExportFilePath As String, ByVal ImportFilePath As String)
VC++의 함수에서 디버깅을 해보면 제일 마지막의 값은 쓰레기 값이 넘어오는 것을 확인할 수 있었습니다.
DLL함수 호출 규약을 __stdcall으로 바꾸어 테스트를 한번 해 보아야 겠습니다.
- 결론 :
VB는 똑똑하게(?) 인자 갯수를 다르게 선언하고 또 사용하고 해도 컴파일때 에러를 내지 않습니다.
뭐 이런게 다 있을까요?
댓글
댓글 쓰기