我有两个vc ++ dll项目,它们将生成两个dll。一个
vector<vector<string>>
对象将从一个dll传递到另一个dll。这两个项目都配置为多线程调试DLL。两者都可以在vc ++ 2008和vc ++ 2010上成功编译。但是,只有从vc ++ 2008项目生成的dll才能工作。 dll将由在MSDEV 6.0版下编译的另一个dll使用。
所以我的问题是为什么vector<vector<string>>
对象无法在vc ++ 2010构建的dll之间传递? THX:)
答案 0 :(得分:8)
如果您计划为DLL使用不同的编译器版本以及使用它的代码,则不能在DLL接口中使用STL类型。
vector和string的实现可能有所不同(在你的情况下似乎也是如此),你会遇到这样的问题。
答案 1 :(得分:0)
VC ++ 2010使用新的C ++ 11标准,该标准涉及对像vector这样的模板容器进行大的更改(使用右值引用和移动语义,一开始)。
如果您正在共享这样的库,通常最安全的选择是为所有内容制作简单,无聊的标准C接口函数。毕竟,这些工作几乎无处不在。然后可以以您认为合适的方式完成内部实施。