MFC x64 ADO msado15.dll

Programming/MFC 2016. 10. 28. 18:05 Posted by TanSanC
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

MFC 에서


x64 환경에서


ADO msado15.dll 를 사용하고 싶었다.







#import "c:\Program Files\Common Files\System\ADO\msado15.dll" rename("EOF", "EndOfFile")




1. tlh 파일 추출하기

#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") rename("BOF", "adoBOF")

 

구문을 그대로 두고 컴파일을 진행 한다.

 

컴파일이 성공하면 Object 파일들이 생성 되는 Debug 폴더 또는 Release 폴더로 가보자.

 

#import 처리기가 하는 역할이 dll 에서 tlh 를 추출하여 헤더 파일에 그대로 붙여 넣는 작업을 해주는 역할이기 때문에 Debug 폴더나 Release 폴더에 가보면 다음과 같은 파일이 보일것이다.

 

msado15.tlh

msado15.tli

 

각각 용량은 167KB, 146KB 정도로 꽤 큰편이다.

 

위 두파일을 복사해서 #import 구문을 사용했던 소스와 동일한 경로에 붙여넣기 한다.

 

#import ".........

코드를 다음과 같이 변경한다.

#include "msado15.tlh"

 

이렇게 하면 #import 로 추출된 tlh 파일을 include 하는 구조이기 때문에 동일한 역할을 수행한다.

 

/MP 스위치를 켜고 빌드 -> 솔루션 다시 빌드 를 선택하여 컴파일을 진행해 보면 또 컴파일 실패가 된다.

 

msado15.tlh(5025): fatal error C1083: 포함 파일을 열 수 없습니다. "....\msado15.tli': No such file or directory"

 

하지만 컴파일 오류 내용을 잘 보면 포함 파일을 열 수 없습니다. 라고 나오는것을 알 수 있기 때문에 tlh 파일 안에서 msado15.tli 파일을 찾을 수 없다 라는 오류를 알 수 있다.

 

msado15.tlh 파일을 메모장등의 에디터로 열어보자.

 

편집 -> 찾기 메뉴를 이용하요 .tli 를 찾아 보면 거의 끝부분에서 다음 줄을 찾을 수 있다.

 

//

// Wrapper method implementations

//

#include ".......\debug\msado15.tli"

 

 

앞 경로는 개인정보 보호상 삭제..

 

Full Path 로 된 #include  문을 찾을 수 있는데 바로 이 부분의 경로가 Debug 폴더까지 들어가 있어서 파일을 찾을 수 없는것으로 나오는것이다.

 

경로를 #import 문이 있는 소스의 경로로 수정한 다음 다시 한번 컴파일 해보면

 

제대로 컴파일 되는것을 확인 할 수 있다.