我正在尝试为新系统重新编译一些代码。它涉及一个预编译的静态库,我没有源代码(只有头文件),并且该库是使用 VC++ 6.0 或更早版本以及较旧的运行时库构建的。在我的旧系统上,它有 VC++ 6.0,我的程序构建并运行良好,但我最近升级了一些东西,我不再能够访问 VC++ 6.0,只能访问 Express 2008(9.0 w/SP)。
当我构建解决方案时,它可以编译,但出现以下链接器错误:
1>libcpmtd.lib(xlock.obj) : error LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAE@XZ) already defined in NOREC.lib(track.obj) 1>LIBCMT.lib(stdexcpt.obj) : error LNK2005: "public: __thiscall std::bad_cast::bad_cast(char const *)" (??0bad_cast@std@@QAE@PBD@Z) already defined in NOREC.lib(track.obj) 1>LIBCMT.lib(stdexcpt.obj) : error LNK2005: "public: __thiscall std::bad_cast::bad_cast(class std::bad_cast const &)" (??0bad_cast@std@@QAE@ABV01@@Z) already defined in NOREC.lib(track.obj) 1>LIBCMT.lib(stdexcpt.obj) : error LNK2005: "public: virtual __thiscall std::bad_cast::~bad_cast(void)" (??1bad_cast@std@@UAE@XZ) already defined in NOREC.lib(track.obj) 1>LINK : fatal error LNK1104: cannot open file 'libcp.lib'
任何如何克服这个问题的想法都非常受欢迎。
最佳答案
从上次链接错误开始,找不到libcp.lib
。从 VS 2005 开始,该库已被删除。对于多线程版本,请使用 /MT
。
http://msdn.microsoft.com/en-us/library/abx4dbyh%28v=vs.80%29.aspx
多线程版本是libcpmt.lib
,您将通过/MT
标志自动获得它。我在第一个错误中看到您正在使用 libcpmtd.lib
这是其调试版本。如果您不使用 /MTd
,我不确定您如何得到它。 (或者如果是的话,如何引用 libcp.lib
因为您应该使用其中之一,而不是两者)
关于visual-c++ - VC++ 8.0 程序出现链接器错误 : Precombiled Library VC++ 6. 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10823685/