我为我的应用程序开发了一个插件系统。 我的软件是用MFC/c++编写的
我选择从 DLL 导入函数。 但我面临一个问题。 我已经使用 std 库进行了编写,但是 SO 向我表明“如果基于模板,则将任何内容传入和传出 DLL 时都会存在危险”
所以我开始重写它。但现在我找不到好的解决方案。 该 dll 将解析 Youtube 并以如下结构返回结果:
struct VideoInfo{
wchar_t* strName;
wchar_t* strURL;
int iDuration;
float fRate;
};
但是将是其中的 50 个,在我之前的代码中我只是返回了 std::vector<VideoInfo*> *vecVideos;
但我怎样才能以安全的方式做到这一点?
最佳答案
您可以创建一个链接列表并返回它,而不是返回 vector 。
无需担心不兼容,而且使用简单:
struct Node
{
VideoInfo vi;
Node *Next;
};
当您构建视频列表时,只需执行以下操作:
Node *ptr = new Node();
ptr->vi = MyVideoInfo; // Assumes MyVideoInfo is the new video
ptr->Next = current;
current = ptr; // Assuming current is our current linked list
您甚至可以在 c 中使用它,因为您只需将其包装在 extern "C"{} 中并将 typedef 添加到节点声明的前面。
关于c++ - 如何在 DLL 中返回 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5373553/