在Visual Studio 2010中使用SystemC

时间:2013-03-19 21:17:14

标签: visual-studio-2010 systemc

我是SystemC的新手,我刚刚使用this教程将其编译为与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相关。 如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

这主要与用于编译SystemC库(SystemC.lib)和SystemC项目的项目的不同MS运行时库有关。使用MS编译器,有4种不同的运行时库:

  • 多线程(/ MT) - &gt; LIBCMT.LIB
  • 多线程调试(/ MTd) - &gt; LIBCMTD.lib
  • 多线程DLL(/ MD) - &gt; MSVCRT.lib,MSVCPRT.lib + MSVCR100.DLL,MSVCP100.DLL
  • 多线程调试DLL(/ MDd) - &gt; MSVCRTD.lib,MSVCPRTD.lib + MSVCR100D.DLL,MSVCP100D.DLL

您似乎使用/ MDd编译SystemC.lib,但是您使用/ MTd编译SystemC项目。你可以纠正它:

从属性页面选择配置属性==&gt; C / C ++ ==&gt;代码生成==&gt;运行时库==&gt;多线程调试DLL(/ MDd)。

可在此处找到类似的主题:Linker errors between multiple projects in Visual C++