예전 자유 게시판

번역된 책보다 궁금한 점이 있어 문의 드립니다.

염원영 2012-06-14 08:06


Windows 시스템 프로그래밍 4판 번역서 잘 보고 있습니다.
그런데 193페이지,194페이지에 일부 내용이 잘 실행이 되지 않아서 문의드립니다.
DLL 을 export,import 할 때 자동으로 전처리문 (dll이름_EXPORTS) 이
자동으로 만들어진다고 했는데 아무리 시도해 봐도 안되네요.
이 내용은 저도 처음 안 건데... 테스트는 Visual Studio 2010 으로 했습니다.

원래 내용이 잘못된건지 아니면 번역하실때 오역이 있었는지 모르겠습니다.
원서 내용이 어떻게 된건지 궁금하네요.
확인 부탁드립니다.


류광 2012-06-14 17:06


프로젝트 설정에 뭔가 문제가 있는게 아닐까요...

VC++2010 Express에서 잠깐 테스트해 보았는데(번역 당시에는 아마 2008을 사용했었을 것입니다), dlltest라는 DLL 프로젝트를 만들고 '프로젝트 속성 페이지 - 구성 속성 - C/C++ - 전처리기 - 전처리기 정의 항목'을 보니 실제로 DLLTEST_EXPORTS 가 있습니다.

이런 식으로 점검할 수도 있습니다. 자동 생성되는 dlltest.h를 다음과 같이 변경하고

#ifdef DLLTEST_EXPORTS
char a[-1]; // 추가 - 여기서 컴파일 오류
#define DLLTEST_API __declspec(dllexport)
#else
#define DLLTEST_API __declspec(dllimport)
#endif

프로젝트를 빌드했을 때 a[-1]에서 컴파일 오류가 난다면 DLLTEST_EXPORTS가 정의되어 있는 것인데요. 실제로 오류가 납니다.

프로젝트를 다시 새로 만들어서 한 번 시험해 보세요~

염원영 2012-06-20 08:06

원래 책 내용이 좀 애매해서 오해가 갈 수 있는 것 같습니다.

VC 에서 DLL 프로젝트 만드는 방법이 3가지가 있더라구요.
Win32 DLL, MFC 정규 DLL, MFC 확장 DLL 을 만들 수 있는데
저의 경우는 현재 MFC 확장 DLL 을 만들어서 사용하고 있습니다. 그래서 프로젝트 설정에 DLL이름_Exports 가 들어가 있지 않더라구요.

Win32 DLL 의 경우에만 새로 프로젝트를 만들때 프로젝트 속성에
Exports 전처리문이 추가될 수 있도록 되어 있고요.
컴파일 할 때 결국 자동으로 만들어주지 않는 것 같습니다.

제가 책의 내용을 잘 못 이해 한건지 모르겠습니다.
원서 내용을 함 보고 싶네요.

류광 2012-06-20 22:06


그렇군요.... 원서에 MFC에 대한 언급은 전혀 없습니다.