首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::exception::_Raise和std::exception::exception上的VC++链接器错误

std::exception::_Raise和std::exception::exception上的VC++链接器错误
EN

Stack Overflow用户
提问于 2008-10-30 08:51:10
回答 2查看 5.6K关注 0票数 0

我正在使用Visual C++ 2005速成版,并收到以下链接器错误:

代码语言:javascript
复制
19>mylib1.lib(mylibsource1.obj) : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::exception::_Raise(void)const " (__imp_?_Raise@exception@std@@QBEXXZ) referenced in function "protected: static void __cdecl std::vector<class mytype,class std::allocator<class mytype> >::_Xlen(void)" (?_Xlen@?$vector@Vmytype@@V?$allocator@Vmytype@@@std@@@std@@KAXXZ)
19>mylib2.lib(mylibsource2.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::exception::_Raise(void)const " (__imp_?_Raise@exception@std@@QBEXXZ)
19>mylib1.lib(mylibsource1.obj) : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall std::exception::exception(char const *,int)" (__imp_??0exception@std@@QAE@PBDH@Z) referenced in function "public: __thiscall std::logic_error::logic_error(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0logic_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z)
19>mylib2.lib(mylibsource2.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::exception::exception(char const *,int)" (__imp_??0exception@std@@QAE@PBDH@Z)

我在生成的代码中关闭了异常,并在包含向量头文件之前使用:

代码语言:javascript
复制
#define _HAS_EXCEPTIONS 0

几个谷歌搜索结果显示了一些东西,但没有“啊哈!”对我有效的解决方案。

编辑:

正如前面提到的,"_HAS_EXCEPTIONS 0“本身并不会关闭异常。它所做的是,至少在向量头文件中,是在异常对象上调用_Raise,而不是调用C++“抛出”。在我的例子中,它不能链接到异常对象的_Raise函数,因为我没有包含正确的库。然而,这个库是什么并不明显。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-10-31 16:15:35

添加此行:

代码语言:javascript
复制
#define _STATIC_CPPLIB

在包含向量头之前似乎可以做到这一点。

票数 1
EN

Stack Overflow用户

发布于 2008-10-30 09:45:00

第三个错误清楚地表明#define the _HAS_EXCEPTIONS 0不会影响。现在,可能包含(有道理,共享代码可能会减少可执行文件的大小)。这就解释了为什么在包含之前定义它仍然会有错误。这种定义应该在您的项目设置中完成。

请注意,_HAS_EXCEPTIONS在Visual Studio中是一个不受支持的功能。它本身并不会关闭异常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/249607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档