2011-03-20 3 views
0

함수 내보내기를 처리하기 위해 .def 파일을 사용하는 C++ 6.0 프로젝트에서 유지 관리를하고 있습니다. 클래스 정의에 한 쌍의 인스턴스 메소드를 추가해야했지만,이 메소드를 .def 파일에 추가하여 내보낼 수있는 방법을 모르겠습니다. .def 파일의 EXPORTS 섹션 아래에있는 각 행은 [email protected]@@AStringOfLetters과 비슷하게 보입니다. 이유는 알 수 없으므로 끝 부분에 @Z이 표시 될 수 있습니다. 나는 편지의 문자열이 어떤 방법으로 메소드의 프로토 타입에 대응한다고 가정하고 있지만 인코딩을 설명하는 문서는 찾을 수 없습니다. 내가 추가 한 메소드에는 기존 메소드 중 어느 것과도 정확히 일치하는 프로토 타입이 없습니다.Visual C++ 6 프로그램에서 .def 파일을 올바르게 수정하는 방법은 무엇입니까?

의 내 새로운 방법의 프로토 타입은 다음과 같이 가정 해 봅시다 :

short ClassName::Foo1(const short, const unsigned int, const short, const unsigned int *); 
    short ClassName::Foo2(const short, const unsigned int, short *, unsigned int *); 

내가 내 링커 행복하게하기 위해 .DEF 파일에 추가하고 실제로 방법을 내보낼 필요합니까?

답변

2

C++로 채워진 기호를 내보내는 중입니다. 임시로 앞에 __declspec(dllexport)을 추가 한 다음 Dependency Walker와 같은 DLL을로드하거나 dumpbin을 사용하여 내보내는 내용을 확인합니다. 이렇게하면 새로운 기능에 대한 맹 글링 된 기호가 생기고 그 다음 .def 파일에 추가하여 __declspec을 제거 할 수 있습니다.

+0

감사합니다. 그 트릭을했습니다. – Andrew

0

새 기능의 이름을 변경하려면 구현을 주석 처리하고 프로젝트를 빌드하십시오. 이 방법을 사용하면 새 함수의 맹 글링 된 이름을 표시하는 더 좋은 오류가 발생합니다. def 파일을이 새로운 맹 글링 된 이름으로 업데이트하십시오.

관련 문제