DLL로 컴파일되는 C++ 프로젝트가 있습니다. 멤버 변수로 m_dSurveyStore를 소유 한 여러 클래스가 있습니다. 지도에는 std::string
개의 키와 값을위한 다양한 사용자 정의 클래스가 있습니다. 예 :DLL에서 노출 된 C++ 순서가 지정되지 않은 맵
std::unordered_map< std:string , Survey > SurveyStore;
다른 프로그램 (둘 다 콘솔 C++뿐만 아니라 .Net 코드)에서 사용하려면 클래스를 내 DLL에서 노출해야합니다. std::string
을 맵 키로 사용할 때 "클래스의 클라이언트가 DLL 인터페이스를 사용할 필요가 있습니다"라는 줄에 따라 컴파일러 경고가 표시됩니다. std 형식을 사용하는 인터페이스가 노출되지 않도록 경고하는 다른 게시물을 읽었습니다.
이상적으로 내지도는 개인 멤버 변수가 될 것이며, (생각)은 DLL 외부에 노출되지 않을 것이다 : 나는이 가지는 클래스를 노출 할 경우
class __declspec(dllexport) Project
{
private:
SurveyStore m_dSurveyStore;
}
내가 내지도 키 유형 char *
을 사용해야 지도를 멤버로 사용하거나 std::string
을 사용하여 클래스를 노출하는 강력한 방법이 있습니까? char *를 사용하는 경우 char *
키를 정의하는 구문을 제공하십시오.
SO에서 답을 확인해 보셨습니까? http://support.microsoft.com/default.aspx?scid=KB;EN-US;168958 –