2011-11-16 1 views
1

그래서 인수를 위해, 나는 DLL_EXPORT 장식 기능의 몇 가지 아 파크 ExportedFunctions.cpp라는 모듈이 ExportedFuncitons.cpp이 LibraryFunctions.h을 포함MS VS C++에서 함수를 내보내는 것을 차단하는 방법은 무엇입니까?

#define DLL_EXPORT __declspec(dllexport)

(아래 참조). 이 헤더에서 선언 된 함수는 LibraryFunctions.lib에서 구현되고 정적으로 내 프로젝트에 링크됩니다.

문제는 DLL을 컴파일하고 종속성 워커 (depends.exe)를 사용하여 보면 내게 ExportedFunctions.cpp에서 내 보낸 함수뿐만 아니라 LibraryFunctions.h의 모든 함수를 볼 수 있다는 것입니다. .

LibraryFunctions.h에서 일부 함수 선언을 삭제하더라도 마찬가지입니다. DLL 진입 점으로 계속 표시됩니다. 나는 그들을 숨기고 싶다.

+1

네임 스페이스 {} (즉, 익명 네임 스페이스)를 사용해 보았습니까? 함수를 계속 내보낼 수는 있지만 범위를 확인하지 못하면 함수를 호출 할 수 없습니다. – moshbear

+2

디버그 모드에서 라이브러리를 빌드하고 있거나 종속성 워커가 디버그 심볼을 선택하여 (내보내기 여부와 상관없이) 모든 함수를 표시 할 수 있습니까? –

답변

0

알아 냈어.

문제는 lib 파일이 함수를 내보내는 것입니다. .h 파일이 무엇을 말하는지에 관계없이 내보내는 것처럼 보입니다.

운 좋게도 저는 LibraryFunctions의 소유자이기 때문에 "Release - Static Lib"을 사용하여 다시 컴파일했습니다. 이 구성에서 dllexport 지시문을 차단합니다.

관련 문제