我目前正在编写一个只有导出函数(没有类)的 MFC DLL,通常我使用的格式
extern "C" void EXPORT_DLL function_name(parameters)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// do something here
}
但现在我需要导出一组数据。用户名和 ID 列表(来自 MongoDB)。
是否可以像这样导出一个返回 vector 对的函数,或者它会因为它不是可导出类型而中断吗?
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 中使用。 (您可以使用来自 c 的 DLL 中的其他 extern "C"
函数)
无论如何,c 中没有使用 vector ...
将以下代码放入您的 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;
}
关于c++ - 在 MFC DLL 中导出返回 vector 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25387872/