悬赏VS2005中使用vector iterator导致链接异常2001的有关问题,卡了小弟我3天了
悬赏VS2005中使用vector iterator导致链接错误2001的问题,卡了我3天了
同样一个工程,VS2003下编译无任何问题,MT 多线程。链接生成EXE。
到了VS2005下,编译没问题,链接产生一堆错误:
error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class std::_Vector_iterator<class Node *,class std::allocator<class Node *> > __thiscall Node::child_end(void)" (__imp_?child_end@Node@@QAE?AV?$_Vector_iterator@PAVNode@@V?$allocator@PAVNode@@@std@@@std@@XZ),该符号在函数 "public: virtual void __thiscall CBulletLayer::update(float)" (?update@CBulletLayer@@UAEXM@Z) 中被引用
代码中使用到这个一个导出类:
///////////////////////////////////////////////////////////
class Xlbe_Export Node
{
public:
typedef std::vector<Node *> Nodes;
typedef std::vector<Action *> Actions;
public:
Node();
virtual ~Node();
。。。。。
};
导致只要是用到vector的 iterator 都会导致出现这个问题。
怀疑是对STL的支持不一致;把 VS2003的VECTOR文件复制过来,可以编译,但是运行出错:std_bad_alloc 这个问题卡了我3天了!不信就我一个人遇到过!
------解决方案--------------------
不用MT,用MTD试试呢
------解决方案--------------------
导出类是一个lib库?如果是这样的话,必须用相同版本的VS编译那个lib
不同的VS,标准库是有差异的
------解决方案--------------------
这是比较规范的做法,不然问题太多
------解决方案--------------------
DLL用2003 编译的,然后在2005 下链接?DLL还导出类呢,死得也算明白明白,只是死得很惨!!为什么要跨环境使用?
如果非要跨环境使用,不能导出接口吗?或者纯粹点,做成一个COM模块?
------解决方案--------------------
配置属性-VC++目录,调整一下“包含目录”、“引用目录”、“库目录”中的顺序。
可能因版本因素引发的问题多使用此解决方案。
------解决方案--------------------
跨版本可能因为不同设置,导致的。。
同样一个工程,VS2003下编译无任何问题,MT 多线程。链接生成EXE。
到了VS2005下,编译没问题,链接产生一堆错误:
error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class std::_Vector_iterator<class Node *,class std::allocator<class Node *> > __thiscall Node::child_end(void)" (__imp_?child_end@Node@@QAE?AV?$_Vector_iterator@PAVNode@@V?$allocator@PAVNode@@@std@@@std@@XZ),该符号在函数 "public: virtual void __thiscall CBulletLayer::update(float)" (?update@CBulletLayer@@UAEXM@Z) 中被引用
代码中使用到这个一个导出类:
///////////////////////////////////////////////////////////
class Xlbe_Export Node
{
public:
typedef std::vector<Node *> Nodes;
typedef std::vector<Action *> Actions;
public:
Node();
virtual ~Node();
。。。。。
};
导致只要是用到vector的 iterator 都会导致出现这个问题。
怀疑是对STL的支持不一致;把 VS2003的VECTOR文件复制过来,可以编译,但是运行出错:std_bad_alloc 这个问题卡了我3天了!不信就我一个人遇到过!
stl
Visual Studio 2005
Iterator
无法解析的外部符号
多线程
------解决方案--------------------
不用MT,用MTD试试呢
------解决方案--------------------
导出类是一个lib库?如果是这样的话,必须用相同版本的VS编译那个lib
不同的VS,标准库是有差异的
------解决方案--------------------
这是比较规范的做法,不然问题太多
------解决方案--------------------
DLL用2003 编译的,然后在2005 下链接?DLL还导出类呢,死得也算明白明白,只是死得很惨!!为什么要跨环境使用?
如果非要跨环境使用,不能导出接口吗?或者纯粹点,做成一个COM模块?
------解决方案--------------------
配置属性-VC++目录,调整一下“包含目录”、“引用目录”、“库目录”中的顺序。
可能因版本因素引发的问题多使用此解决方案。
------解决方案--------------------
跨版本可能因为不同设置,导致的。。