0

オープンソース ライブラリを自分のプロジェクトの 1 つにリンクしようとしています。ライブラリはアンマネージド (Tetgen という名前) で、私のプロジェクトはマネージド C++ です。

私のプロジェクトはヘッダーを認識し、ヘッダーで定義された関数を使用できます。しかし、.cpp で定義されたいくつかのメソッドにアクセスしようとするたびに、2028 エラーが発生します。

エラー LNK2028: 未解決のトークン (0A000E20) "public: void __thiscall tetgenio::save_nodes(char const *)" (?save_nodes@tetgenio@@$$FQAEXPBD@Z) 関数で参照されている "public: virtual bool __thiscall ForwardModelingPlugin::CustomMeshVol3D: :tesselate(void)" (?tesselate@CustomMeshVol3D@ForwardModelingPlugin@@$$FUAE_NXZ)

テスト関数を作成しようとしました:

int tetgenio::Test(int i) {  
    return i;  
}

...そしてヘッダーで定義された別の Testbis 関数。Testbis は機能し、Test は 2028 エラーを返します。

プロジェクトの .obj と作成された .lib を比較しました。lib には次のものがあります。

save_nodes@tetgenio@@QAEXPAD@Z

しかし、.obj では次のようになります。

save_nodes@tetgenio@@$$FQAEXPBD@Z in the .obj

それらは同じではないようです。

すべて /clr でコンパイルされます。どちらの方法でも同じ結果で、.lib と .dll の両方を作成しようとしました。

4

1 に答える 1

0

これは、同じファイルを含む別のフォルダーにリンクするリンカーの問題が原因でした。

于 2010-07-07T14:56:56.650 に答える