オープンソース ライブラリを自分のプロジェクトの 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 の両方を作成しようとしました。