1

WinXPでVC++2010を使用して、元々ヘッダーのみのライブラリであるArmadillo線形代数ライブラリのダイナミックライブラリを作成しようとしています。新しいプロジェクトを作成し、ソースファイルを追加し、1つのArmadillo関数(Colクラス)のみをエクスポートするように指定する.defファイルを作成しましたが、ColクラスでLNK2001エラーが発生します。メインを作成してColをうまく使用できるので、Colは正しく含まれていると思います。

また、関数定義で「__declspec(dllexport)」を使用してコンパイルしましたが、dumpbinを使用しても何も表示されず、.dllを正常に使用できないため、関数はエクスポートされません。ここで何かが足りませんか?

4

1 に答える 1

0

Armadilloは式テンプレートを使用するC++テンプレートライブラリであるため、そこからDLLを作成することはできないと思います。

式テンプレートは、Armadilloクラスを使用するコードをコンパイルするときはいつでも、C++コンパイラによってコンパイル時に実行(実行)されます。C ++ライブラリが式テンプレート(テンプレートメタプログラミングの一部)を使用する場合は常に、ライブラリはC++コンパイラの拡張機能と考えることができます。

すべてのArmadilloコードはヘッダーにあります。そのため、クラスの1つ(例:Colクラス)をエクスポートできたとしても、関連する数学的機構(例:加算、乗算など)はエクスポートされません。これは、図書館。

于 2013-01-31T23:57:52.943 に答える