我的c ++项目适用于vc ++ 2008,但不适用于vc ++ 2010

时间:2012-06-14 07:27:22

标签: c++ dll

我有两个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:)

2 个答案:

答案 0 :(得分:8)

如果您计划为DLL使用不同的编译器版本以及使用它的代码,则不能在DLL接口中使用STL类型。

vector和string的实现可能有所不同(在你的情况下似乎也是如此),你会遇到这样的问题。

答案 1 :(得分:0)

VC ++ 2010使用新的C ++ 11标准,该标准涉及对像vector这样的模板容器进行大的更改(使用右值引用和移动语义,一开始)。

如果您正在共享这样的库,通常最安全的选择是为所有内容制作简单,无聊的标准C接口函数。毕竟,这些工作几乎无处不在。然后可以以您认为合适的方式完成内部实施。