2012-11-09 5 views
3

모델의 경우 다음 사항을 고려 <-> 동적 링크 라이브러리 호환성 :가져 오기 라이브러리

  1. DLL 인터페이스가 변경되었지만 구현하지 않습니다됩니다. 실행 파일과 새 가져 오기 라이브러리를 연결해야합니까? 응용 프로그램과 DLL 모두 동일한 컴파일러와 링커를 사용하여 동일한 IDE에서 컴파일 및 링크됩니다.

  2. DLL 인터페이스는 변경되지 않지만 구현은 않습니다. 새로운 버전의 응용 프로그램과 DLL은 IDE 버전 2.0 (기호 적 의미, 예를 들어 C++ Builder XE2로 대체)에서 컴파일되고 링크됩니다. IDE 1.0 버전 (예 : C++ Builder 6)으로 컴파일 된 가져 오기 라이브러리의 이전 버전과 응용 프로그램 이진을 연결할 수 있습니까? 프로그램이 런타임 오류 (예 : 액세스 위반과 같은)없이 OK로 실행됩니까?

답변

2

동일한 컴파일러 제조업체 및 버전을 사용하면 맹 글링 된 이름도 동일하므로 # 1로 잘되어야합니다.

# 2 할 수 있습니다. 가능성이 높다는 것을 의미하며, 당신을 물 수도 있습니다 이름 mangling 호환성을 소개합니다. 내보내기가 모두 "C"스타일 (단순한 이름)이거나 .def 파일을 통해 맹 글링되지 않은 ID로 하드 맵핑되거나 (더 이상 요즘에는 더 이상 보이지 않는 서수에 의해로드되는 경우), # 2 여전히 가능합니다.

관련 문제