명시적 선언 없이 DLL에 대한 자동 기호 내보내기
Visual Studio 2005에서는 __declspec을 수동으로 추가하지 않고도 DLL에서 모든 기호를 자동으로 내보낼 수 있습니다. (dllexport) 속성 또는 .def 파일 생성. 방법은 다음과 같습니다.
CMake 사용(권장)
- CMake의 최신 개발 버전(cmake-3.3.20150721-g9cd2f-win32-x86.exe)을 설치합니다. 이상).
- 만들기 CMakeLists.txt 파일이 있는 CMake 프로젝트.
- CMakeLists.txt 파일에 다음 줄을 추가합니다.
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
- CMake를 사용하여 Visual Studio 프로젝트를 생성합니다(cmake -gui) 및 컴파일합니다.
이점:
- 이 방법에는 클래스나 함수에 명시적인 내보내기 매크로가 필요하지 않습니다.
- .def를 수동으로 생성할 필요가 없습니다.
참고: 전체 프로그램 최적화(/GL)는 이 접근 방식으로 사용할 수 없습니다.
객체 파일 정보가 포함된 .def 파일 생성
CMake 접근 방식의 대안으로 다음을 사용하여 수동으로 .def 파일을 생성할 수 있습니다. 단계:
- 내보낼 코드에서 정적 라이브러리를 생성합니다.
- dumpbin /LINKERMEMBER를 사용하여 정적 라이브러리에서 내보내기를 추출합니다.
- 출력 구문 분석 dumpbin을 만들고 .def 파일을 만듭니다.
- .def를 사용하여 DLL을 연결합니다. 파일.
이점:
- 기호를 더 세밀하게 제어할 수 있습니다. 내보내기.
단점:
- 정적 라이브러리의 수동 생성, dumpbin 구문 분석 및 .def 파일 작성이 필요합니다.
- CMake만큼 효율적이지 않을 수 있습니다. 접근 방식.
추가 팁:
- 클래스 내보내기 접근 방식을 사용하는 경우 __declspec(dllexport) 또는 extern "C" __declspec(dllexport)를 추가하세요. 클래스 또는 메소드 선언에 추가하세요.
- 대신 %2 사용을 고려하세요. 이전 버전의 Windows와의 호환성을 위해 .def 파일의 __cdecl.
- 코드와 .def 파일(수동으로 생성한 경우) 간에 이름 변경 설정이 일치하는지 확인하세요.
위 내용은 __declspec(dllexport) 또는 .def 파일을 사용하지 않고 Visual Studio에서 DLL의 모든 기호를 자동으로 내보낼 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!