В настоящее время я пишу MFC DLL только с экспортированной функцией (без класса) и обычно я использую формат
extern "C" void EXPORT_DLL function_name(parameters)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// do something here
}
но теперь мне нужно экспортировать массив данных. Список имен пользователей и идентификаторов (из MongoDB).
Можно ли экспортировать функцию, которая возвращает вектор пары, например, или она сломается, потому что это не экспортируемый тип?
extern "C" vector<pair<std::string, std::string>> EXPORT_DLL function_name(parameters)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// do something here
return a_vector_of_pair;
}
Если это невозможно, каковы другие варианты?
Благодарю.
Вы можете поставить функции без extern "C"
,
Это означает, что вы можете использовать эту функцию только из c ++, а не из c. (вы можете использовать другие extern "C"
функции из DLL из в)
Во всяком случае, нет смысла использовать вектор в …
Поместите следующий код в ваш заголовок dll:
//header
typedef std::pair<std::string,std::string> pair_strs;
typedef std::vector<pair_strs> vec_pair_strs;
vec_pair_strs DLL_EXPORT SomeFunction();
Поместите следующий код в ваш источник DLL:
//cpp:
vec_pair_strs DLL_EXPORT SomeFunction()
{
vec_pair_strs v;
//...
return v;
}