2013-03-19 126 views
0

我是SystemC的新手,我只是編譯它以便在VS2010中使用它,使用this教程。但是,當我試圖調試下面的程序:在Visual Studio 2010中使用SystemC

#include <systemc.h> 

SC_MODULE (systemcTest) { 
SC_CTOR (systemcTest) { 

} 
void say_hello() { 
    cout << "Hello World.\n"; 
} 
}; 
int sc_main(int argc, char* argv[]) { 
systemcTest hello("HELLO"); 
hello.say_hello(); 
return(0); 
} 

我得到類似下面的錯誤51個錯誤:

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 SystemC.lib(sc_simcontext.obj) \msvcprtd.lib(MSVCP100D.dll) 

大多數人到msvcprtd.lib,libcmtd.lib有關。 如何解決這個問題?

回答

0

這主要與用於編譯SystemC庫(SystemC.lib)和SystemC項目的項目使用的不同MS運行時庫有關。與MS的編譯器,有4個不同的運行時庫:

  • 多線程(/ MT) - > LIBCMT.LIB
  • 多線程-調試(/ MTD) - > LIBCMTD.lib
  • 多線程的DLL (/ MD) - > MSVCRT.lib,MSVCPRT.lib + MSVCR100.DLL,MSVCP100.DLL
  • 多線程調試DLL(/ MDd) - > MSVCRTD.lib,MSVCPRTD.lib + MSVCR100D.DLL,MSVCP100D .DLL

看來您使用/ MDd來編譯您的SystemC.lib,但您使用/ MTd t編譯你的SystemC項目。您可以更正它:

從屬性頁選擇配置屬性==> C/C++ ==>代碼生成==>運行時庫==>多線程 - 調試-DLL(/ MDd)。

類似的線程可以在這裏找到:Linker errors between multiple projects in Visual C++