c++ - 在 MFC DLL 中导出返回 vector 的函数

标签 c++ dll mfc dllexport

我目前正在编写一个只有导出函数(没有类)的 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/

相关文章:

c++ - 从库类扩展,然后如何让库调用派生类方法

c++ - 在 C++ 和 Visual Studio 中通过 GetProcAddress() 与 DLL 函数交互

c++ - 我构造子类对象的方式有什么问题?

c++ - boost::archive 和序列化的链接器错误

c++ - CScrollbar 适用于一台电脑,但不适用于任何其他电脑

C++ 生成唯一 ID

c++ - _DebugHeapDelete 终止时访问冲突

C#:与 Object 一起使用的类

c++ - 程序没有按顺序通过构造函数,从而导致未初始化的变量

c++ - 没有 RTTI 但仍然是虚拟方法