导出在MFC DLL中返回向量的函数

时间:2014-08-19 15:54:38

标签: c++ dll mfc dllexport

我目前正在使用导出的函数(没有类)对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;
}

如果不可能,还有其他选择吗?

感谢。

1 个答案:

答案 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;
}