2010-08-12 134 views
1

我試圖啓動一個空白的VS2008項目,並按照講座中鍵入的內容,但我碰到了一堆可怕的鏈接錯誤。在用於PC的分配1的zip文件中,有一個名爲CS106B的文件夾。 首先我告訴編譯器頭文件的位置(它們在CS106B文件夾中)。我不得不告訴鏈接器使用CS106CPPLib.lib。好吧,這是標準程序... 但是我不能讓正在出現的錯誤的正面或反面。嘗試鏈接錯誤CS106B

這是從會議類的代碼(講座4 IIRC)

#include "genlib.h" 
#include <iostream> 
#include <fstream> 
#include "simpio.h" 

int main() 
{ 
ifstream in; 
cout << "Enter name: "; 
string s = GetLine(); 
in.open(s.c_str()); 
    if(in.fail()) 
    Error("File didn't open"); 
return 0; 
} 

下面是導致錯誤:

1>------ Build started: Project: inClassCoding, Configuration: Debug Win32 ------ 
1>Linking... 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(char const *)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: bool __thiscall std::ios_base::fail(void)const " ([email protected][email protected]@@QBE_NXZ) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: char const * __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::c_str(void)const " ([email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@QBEPBDXZ) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: void __thiscall std::basic_ios<char,struct std::char_traits<char> >::setstate(int,bool)" ([email protected][email protected][email protected]@[email protected]@@[email protected]@[email protected]) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: int __thiscall std::ios_base::width(int)" ([email protected][email protected]@@[email protected]) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputn(char const *,int)" ([email protected][email protected][email protected]@[email protected]@@[email protected]@[email protected]) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: static bool __cdecl std::char_traits<char>::eq_int_type(int const &,int const &)" ([email protected][email protected]@[email protected]@[email protected]) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: static int __cdecl std::char_traits<char>::eof(void)" ([email protected][email protected]@[email protected]@SAHXZ) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputc(char)" ([email protected][email protected][email protected]@[email protected]@@[email protected]@[email protected]) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: class std::basic_streambuf<char,struct std::char_traits<char> > * __thiscall std::basic_ios<char,struct std::char_traits<char> >::rdbuf(void)const " ([email protected][email protected][email protected]@[email protected]@@[email protected]@[email protected][email protected]@[email protected]@@[email protected]) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: char __thiscall std::basic_ios<char,struct std::char_traits<char> >::fill(void)const " ([email protected][email protected][email protected]@[email protected]@@[email protected]@QBEDXZ) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: int __thiscall std::ios_base::flags(void)const " ([email protected][email protected]@@QBEHXZ) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: int __thiscall std::ios_base::width(void)const " ([email protected][email protected]@@QBEHXZ) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: static unsigned int __cdecl std::char_traits<char>::length(char const *)" ([email protected][email protected]@[email protected]@[email protected]) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::flush(void)" ([email protected][email protected][email protected]@[email protected]@@[email protected]@[email protected]) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > * __thiscall std::basic_ios<char,struct std::char_traits<char> >::tie(void)const " ([email protected][email protected][email protected]@[email protected]@@[email protected]@[email protected][email protected]@[email protected]@@[email protected]) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: bool __thiscall std::ios_base::good(void)const " ([email protected][email protected]@@QBE_NXZ) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: void __thiscall std::basic_ostream<char,struct std::char_traits<char> >::_Osfx(void)" ([email protected][email protected][email protected]@[email protected]@@[email protected]@QAEXXZ) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: void __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::_Lock(void)" ([email protected][email protected][email protected]@[email protected]@@[email protected]@QAEXXZ) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: void __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::_Unlock(void)" ([email protected][email protected][email protected]@[email protected]@@[email protected]@QAEXXZ) already defined in CS106CPPLib.lib(genlib.obj) 
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: class std::locale::facet * __thiscall std::locale::facet::_Decref(void)" ([email protected]@[email protected]@@[email protected]) already defined in CS106CPPLib.lib(simpio.obj) 
1>libcpmtd.lib(locale0.obj) : error LNK2005: "void __cdecl _AtModuleExit(void (__cdecl*)(void))" ([email protected]@[email protected]) already defined in msvcprtd.lib(locale0_implib.obj) 
1>libcpmtd.lib(locale0.obj) : error LNK2005: __Fac_tidy already defined in msvcprtd.lib(locale0_implib.obj) 
1>libcpmtd.lib(locale0.obj) : error LNK2005: "private: static void __cdecl std::locale::facet::facet_Register(class std::locale::facet *)" ([email protected]@[email protected]@@CAXPAV1[email protected]@Z) already defined in msvcprtd.lib(locale0_implib.obj) 
1>libcpmtd.lib(locale0.obj) : error LNK2005: "private: static class std::locale::_Locimp * __cdecl std::locale::_Getgloballocale(void)" ([email protected]@[email protected]@[email protected]@XZ) already defined in msvcprtd.lib(MSVCP90D.dll) 
1>libcpmtd.lib(locale0.obj) : error LNK2005: "private: static class std::locale::_Locimp * __cdecl std::locale::_Init(void)" ([email protected]@[email protected]@[email protected]@XZ) already defined in msvcprtd.lib(MSVCP90D.dll) 
1>libcpmtd.lib(locale0.obj) : error LNK2005: "public: static void __cdecl std::_Locinfo::_Locinfo_ctor(class std::_Locinfo *,char const *)" ([email protected][email protected]@@[email protected]@Z) already defined in msvcprtd.lib(MSVCP90D.dll) 
1>libcpmtd.lib(locale0.obj) : error LNK2005: "public: static void __cdecl std::_Locinfo::_Locinfo_dtor(class std::_Locinfo *)" ([email protected][email protected]@@[email protected]@Z) already defined in msvcprtd.lib(MSVCP90D.dll) 
1>libcpmtd.lib(ios.obj) : error LNK2005: "private: static void __cdecl std::ios_base::_Ios_base_dtor(class std::ios_base *)" ([email protected][email protected]@@[email protected]@Z) already defined in msvcprtd.lib(MSVCP90D.dll) 
1>libcpmtd.lib(ios.obj) : error LNK2005: "public: static void __cdecl std::ios_base::_Addstd(class std::ios_base *)" ([email protected][email protected]@@[email protected]@Z) already defined in msvcprtd.lib(MSVCP90D.dll) 
1>libcpmtd.lib(xlock.obj) : error LNK2005: "public: __thiscall std::_Lockit::_Lockit(int)" ([email protected]@@[email protected]@Z) already defined in msvcprtd.lib(MSVCP90D.dll) 
1>libcpmtd.lib(xlock.obj) : error LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" ([email protected]@@[email protected]) already defined in msvcprtd.lib(MSVCP90D.dll) 
1>LIBCMTD.lib(setlocal.obj) : error LNK2005: __configthreadlocale already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __exit already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __cexit already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __amsg_exit already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __initterm_e already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(lconv.obj) : error LNK2005: _localeconv already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(tidtable.obj) : error LNK2005: __encode_pointer already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(tidtable.obj) : error LNK2005: __decode_pointer already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in MSVCRTD.lib(cinitexe.obj) 
1>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in MSVCRTD.lib(cinitexe.obj) 
1>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in MSVCRTD.lib(cinitexe.obj) 
1>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in MSVCRTD.lib(cinitexe.obj) 
1>LIBCMTD.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" ([email protected]@YAXXZ) already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(winxfltr.obj) : error LNK2005: __XcptFilter already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(invarg.obj) : error LNK2005: __invalid_parameter already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(mlock.obj) : error LNK2005: __lock already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(mlock.obj) : error LNK2005: __unlock already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(crt0.obj) : error LNK2005: _mainCRTStartup already defined in MSVCRTD.lib(crtexe.obj) 
1>LIBCMTD.lib(errmode.obj) : error LNK2005: ___set_app_type already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(strtoq.obj) : error LNK2005: __strtoi64 already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(strtoq.obj) : error LNK2005: __strtoui64 already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LIBCMTD.lib(dbgrptw.obj) : error LNK2005: __CrtDbgReportW already defined in MSVCRTD.lib(MSVCR90D.dll) 
1>LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library 
1>LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library 
1>J:\Projects\Coding\C++\CS106B\ProfessionalDevelopmentCS106B\test\inClassCoding\Debug\inClassCoding.exe : fatal error LNK1169: one or more multiply defined symbols found 
1>Build log was saved at "file://j:\Projects\Coding\C++\CS106B\ProfessionalDevelopmentCS106B\test\inClassCoding\Debug\BuildLog.htm" 
1>inClassCoding - 60 error(s), 2 warning(s) 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

我完全新的Visual Studio中,並幫助不勝感激。

編輯:在VirtualBox虛擬機中運行OSX,我得到了這個確切的程序,使用XCode在幾分鐘內運行。缺點是虛擬機無法全屏顯示,速度相對較慢。

+0

值得嘗試這裏提到的步驟http://msdn.microsoft.com/en-us/library/72zdcz6f%28VS.80%29.aspx – DumbCoder 2010-08-12 07:26:51

回答

0

看起來像一個不兼容的庫。

所添加的庫定義了通常由編譯器庫提供的​​一些符號:

1> msvcprtd.lib(MSVCP90D.dll):錯誤LNK2005:「公共:類的std :: basic_ostream> * __thiscall STD :: basic_ios> tie(void)const「(?tie @?$ basic_ios @ DU?$ char_traits @ D @ std @@@ std @@ QBEPAV?$ basic_ostream @ DU?$ char_traits @ D @ std @@@ 2 @ XZ)在CS106CPPLib.lib(genlib.obj)已經定義

我會懷疑該CS106CPPLib.lib抑制接頭使用由VS2008提供的其他庫。您應該考慮CS106CPPLib.lib與VS2008不兼容。

0

沒有看到您的entire Project settings這是很難準確回答。可能this可能會幫助你。

另外仔細檢查包含的庫以確保沒有多個庫包含多次。這可能是一個原因。 雖然我猜。

0

Genlib定義了與MSVCPRTD庫鏈接的函數。

您可以嘗試從解決方案中去除解決方案中的MSVCPRTD(在版本中爲debug和MSVCPRT),方法是轉到項目屬性頁面,轉至鏈接器部分的輸入選項卡,並將庫名稱輸入到排除字段(或使用/ NODEFAULTLIB:MSVCPRTD命令行開關)

要檢查的另一件事是確保庫以相同的模式(/ MT或/ MD)編譯。我不知道genlib(CS106CPPLib)中定義了什麼,因此在您的情況下,排除內置庫可能不起作用,但值得一試。

0

確保您的測試項目 Configuration Properties > C/C++ > Code Generation > Runtime Library: Multi-threaded Debug (/MTd) or Multi-threaded Debug DLL (/MDd).。與gtest項目設置相同。

相關問題