Экспорт функции, возвращающей вектор в MFC DLL

В настоящее время я пишу 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;
}

Если это невозможно, каковы другие варианты?

Благодарю.

1

Решение

Вы можете поставить функции без 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;
}
0

Другие решения


По вопросам рекламы [email protected]