기본 콘텐츠로 건너뛰기

라벨이 Calling Convention인 게시물 표시

DLL calling convention

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