VS6可以编译C ++项目而不会出现错误和警告。 使用VS 2013 Prof.,链接器问题正在发生。他们提供的模式是std :: basic_string。
该代码是在2007年编写的,但不是由我编写的。
由构造函数引用:
vrun.obj:错误LNK2019:未解析的外部符号 “__declspec(dllimport)public:char const * __thiscall 的std :: basic_string的,类 std :: allocator> :: c_str(void)const“(__ imp_?c_str @?$ basic_s 特林@ DU?$ char_traits @ d @ @@ STD V'$分配器@ d @ @@ 2 STD @@ QBEPBDXZ) 在fun ction中引用“public:__thiscall VTrs :: VTrs(class VMessageContext&)“(?? 0VDMTrs @@ QAE @ AAVVDMMessageHandlerContext @@@ Z)
在vrun.cpp中:
VTrs::VTrs(VMessageContext& handler_):
Inherited(RXS::rName().c_str()),
_handler(handler_)
{
}
(c_str
- > const char* c_str() const;
--- C98风格--- C11尚未应用于项目中
在vrun.h中:
VTrs(VMessageContext&);
由运营商引用:
vrun.obj : error LNK2019: unresolved external symbol "__declspec(dllimport)
public: int __thiscall std::basic_string<char,struct std::char_traits<char>,cl
ass std::allocator<char> >::compare(char const *)const " (__imp_?compare@?$basi
c_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z) referenced in
function "bool __cdecl std::operator==<char,struct std::char_traits<char>,clas
s std::allocator<char> >(class std::basic_string<char,struct std::char_traits<c
har>,class std::allocator<char> > const &,char const *)" (??$?8DU?$char_traits@
D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$a
llocator@D@2@@0@PBD@Z)
指的是 - 只要解释为标准运营商。 (没有为引用字符串的==
完成运算符重载)
顺便说一句,代码本身不包含“std::basic_string
”。
阅读了相应的msdn文章,但这个问题直到现在才解决。
"C"
修饰符修改等'常见'问题已经考虑用于其他代码。
任何提示如何应对?
编辑:第一次使用Visual Studio 2013打开项目时,会显示一种转换对话框。我同意但它影响了VC ++目录。将项目文件与ClearCase与先前的版本进行比较时,可以看到它。 UndoCheckout(通过ClearCase)应用了旧状态。现在它有效。
答案 0 :(得分:0)
您的链接器需要从相关的lib文件中获取较新的MSVC std库,并且在迁移项目时应该选择它。查看项目属性 - >配置属性 - >链接器 - >输入并确保“忽略所有默认库”设置为否
答案 1 :(得分:0)
第一次使用Visual Studio 2013打开项目时,会显示一种转换对话框。我同意但它影响了VC ++目录。将项目文件与ClearCase与先前版本进行比较时可见。 UndoCheckout(通过ClearCase)应用了旧状态。现在它有效。