我目前正在使用导出的函数(没有类)对MFC DLL进行编码,通常我使用格式
extern "C" void EXPORT_DLL function_name(parameters)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// do something here
}
但现在我需要导出数据数组。用户名和ID列表(来自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;
}
如果不可能,还有其他选择吗?
感谢。
答案 0 :(得分:0)
您可以将功能设置为extern "C"
。
这意味着您只能使用c ++而不是c来使用此功能。 (您可以使用来自c)
的DLL中的其他extern "C"
函数
无论如何,c ...中没有使用矢量。
将以下代码放入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;
}