1

私は 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 に関連していました。この問題を解決するには?

4

1 に答える 1

1

これは主に、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++ ==> コー​​ド生成 ==> ランタイム ライブラリ ==> マルチスレッド デバッグ DLL (/MDd) を選択します。

同様のスレッドがここにあります: Visual C++ の複数プロジェクト間のリンカー エラー

于 2013-10-11T20:04:45.563 に答える