簡體   English   中英

在Visual Studio 2010中使用SystemC

[英]Using SystemC in Visual Studio 2010

我是SystemC的新手,並且使用教程將它編譯為與VS2010結合使用。 但是當我嘗試調試以下程序時:

#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)" (?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z) already defined in SystemC.lib(sc_simcontext.obj) \msvcprtd.lib(MSVCP100D.dll)

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

這主要與用於編譯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來編譯SystemC項目。 您可以更正它:

從屬性頁中選擇配置屬性==> C / C ++ ==>代碼生成==>運行時庫==> Multithreaded-Debug-DLL(/ MDd)。

在這里可以找到類似的線程: Visual C ++中多個項目之間的鏈接器錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM