У меня есть проект на C++, который компилируется как DLL. У меня есть несколько классов, которые обладают m_dSurveyStore в качестве переменных-членов. На картах есть ключи std::string
и различные пользовательские классы для значений. например .:C++ Unordered Map Exposed From DLL char
std::unordered_map< std:string , Survey > SurveyStore;
Классы должны быть выставлены из моей библиотеки DLL для использования других программ (как консольные C++, но и .Net кода). Когда я использую 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 –