0

私はこのようなクラスを持っています

class A_DLL A
{
   ...
   template <class T> someFunction(const T &v);
}

ライブラリa.dll内。A_DLLは__declspec(dllexport)、a.dllをビルドするときとa.dllを__declspec(dllimport)使用するときです。

問題は、a.dllに対してリンクされた実行可能モジュールで「someFunction」を使用しようとすると機能することです。ただし、他のライブラリ(b.dll)で使用すると、未解決の外部(someFunctionおよび他のテンプレート)に関するエラーメッセージが表示されます。明らかに、私は__declspecテンプレートで使用するべきではありませんが、それではどのようにクラスを作成するの__declspecですか?

4

1 に答える 1

4

次のような宣言を使用できます。

template class A_DLL MyTemplateClass<int>;

このステートメントは、テンプレートクラスのインスタンス化を生成し、構築しているDLLにエクスポートします(または、プリプロセッサからのA_DLLの設定方法によってはインポートします)。

詳細については、このリンクをたどることもできます。

于 2012-05-15T11:41:11.257 に答える