라이브러리 함수를 작성 중이므로 vectors
& maps
과 같은 인수를 전달할 수 있어야합니다. 라이브러리와 실행 파일 같은 컴파일러 & 설정을 사용하여 컴파일 된 않는Qt 컨테이너를 매개 변수로 공유 라이브러리의 함수에 전달할 수 있습니까?
나는 당신이 도서관 때문에 바이너리 호환성 문제
std::map<int> FixMap(const std::map<int> &);
의 헤더에서 선언 STL 매개 변수와 함수를 가질 수 없습니다 알고있다. 다음Qt는 템플릿 라이브러리를 사용하여
하나 다른 한편으로는, 그들이 제공하는 DLL이 아마 나보다 다른 컴파일러로 컴파일 된 경우에도
QMap<int> FixMap(const QMap<int> &);
작동합니다.
어떤 기술 않는 자신의QMap
, QValueList
는, QString
는 극복이 호환성 문제와 Qt는 사용? 코드를 조금 읽었지만 기술을 격리 할 수는 없습니다.
질문 1 : 질문 : 기술을 적용하는 코드를 작성하는 방법에 대해 누군가가 나에게 설명해 줄 수 있습니까?
불투명 포인터로 string
/map
을 제공하거나 pImpl 관용구를 사용하고 작동 내가 아는 유일한 기술.
질문 2 : 이러한 종류의 호출을 수행하기 위해 '기본'STL 헤더 대신 STLPort를 사용할 수 있습니까? 이것이 STL의 성능에 어떤 영향을 미칩니 까?
코드가 실제로 미리 컴파일 된 바이너리를 참조하고 있습니까? 일반적으로 템플릿 코드는 사용 될 때마다 항상 새로 컴파일됩니다. (템플릿을 "컴파일"할 수는 없습니다.) –
"qt 기술"을 사용하더라도 다른 컴파일러/설정으로 컴파일 할 때 문제가 발생하기 쉽습니다. 단지 몇 번에서 공유 라이브러리를 대체 할 수있는 프로그램을 다시 컴파일 할 필요없이 저장할 수 있습니다. – PlasmaHH