質問

すっかり興味深い経験をしようとするリンクセットコードの作成をVisual Studio Express2008年.libにコンパイルされてVisual Studio2003年.すべてC++.されるものの、その SystemC 2.2.0カーネルのためVS2003入。lib、SystemCモデルとしての成果VS2008.

本サイトにリンクされる場合を保っているとエラーが表示される数字からのSystemC.libファイル(すなわち成VS2003)が見つからない時にリンクエラーまったこの数fv):

SystemC.lib(sc_port.obj) : error LNK2001: unresolved external symbol "public: vo
id __thiscall std::_String_base::_Xran(void)const " (?_Xran@_String_base@std@@QB
EXXZ)

掘から見込み客、そして機能します。libが期待されたこ

Undecoration of :- "?_Xran@_String_base@std@@QBEXXZ"
is :- "public: void __thiscall std::_String_base::_Xran(void)const "

が図書館のファイルVS2008しようとしていましたがリンク(libcpmt.lib)の異なる呼び出し規約:

Undecoration of :- "?_Xran@_String_base@std@@SAXXZ"
is :- "public: static void __cdecl std::_String_base::_Xran(void)"

ためになぜこの違うが、最終的に行いましたが、再コンパ同じvisual studioプロジェクトVS2008用するSystemC.libではなく、一からVS2003.現在のものです。

その基本的な質問はこちら:何が変わったからVS2003にVS2008障があると認められる機能の一部変更する呼び出し規約?とはありま魔法のフラグへのリンカーにVS2008用その他の図書館の機能の呼び出し規約としてのVS2003コンパイル?

更新概要の回答で:しているのは、工業製品であるMicrosoftの変更をC++(C、C++)ABIからメジャーバージョンのVisual Studioる。ができ等、その他のライブラリが互換性.最良のアドバイスを再コンパイル。libのための各バージョンVS.基本的には、みたいなことを言いたいのでソースへのユーザーとしてコンパイルで用い版のVSになってい装置です。

基本的な問題が発見したものをアドバイス:

このような質問をしなかった回答はこの問題:

役に立ちましたか?

解決

ありません規格のC++ABI.その全てのc++コンパイラを取り扱うことができ、異なるABIに、異なるバージョンと同じコンパイラです。きるとともに、同誌掲載号の注目の2つの異なる主要なリリースからGcc.そのような修正がされるようにすることがスタディ-アブロードプログラムを改善すリンク。

がABIなります。のためのインスタンスのvtableの保管-取り扱い後のフードは生成されたコードをコンパイラです。それに伴う、オブジェやコードを生成2008年にな図書館の見方であり2003年.

この時点で、理解できなぜc++ライブラリからの出荷とそのソースコードの出荷に 多くの 異なる建築、およびコンパイラです.

通常、書くときには、図書室されることを避けるために、このような問題をでC言語、c++.Cに付属の標準化されたABIることができるコンパイルでコンパイラをリンクメリカの図書館における任意のCコンパイラが既を尊重することがC ABIます。のためのインスタンスの文字列を実装は標準ではないかと思いま動かさないでください(悪名高null終了文字列).がstd::string実施の変化からGccの主要なリリースにその他(だいにbasic_stringクラスから/usr/include/c++/x.x/ビット/basic_stringファイル)

他のヒント

私の知る限り、これらの問題が原因CRTライブラリの、彼らはメジャーリリースで変更して、CRTタイプ(マルチスレッド、デバッグ、リリース、静的、動的な、など)を混在させることはできませんが起こる知ってます。

通常、彼らはCRTに動的にリンクすることにより、最小限に抑えることができ、私はVS2005でVS2003ライブラリを再利用し、成功していたが、それはそれだけで全体を再コンパイルする方が良いでしょう、迷惑なんです。 時には、あなたは避けるように / NODEFAULTLIB のコンパイラフラグを使用して逃げることができます問題を引き起こしている特定のCRTライブラリとリンクします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top