を使用したい私の.cppファイルで以下のコードを追加しようとした - あなたは完全な型を持っています。それは他のどのタイプとも変わりません。 B
のヘッダーとコンパイル時のリンクをlib
ファイルに含めたり、dllを動的にロードして定義にリンクする必要があります。
この記事をお読みですか?http://support.microsoft.com/kb/168958?
ここで私がテストした(そして、それは働いていた)何の簡単な要約があります:
ダミーDLLプロジェクトを作成します
- は/ DLLヘッダを生成するために、Win32コンソールアプリケーションウィザードを使用しますソースファイルは
template_export_test
- 以下を追加しました:
ファイル:template_export_test.h
#ifndef EXP_STL
#define EXP_STL
#endif
#ifdef EXP_STL
# define DECLSPECIFIER __declspec(dllexport)
# define EXPIMP_TEMPLATE
#else
# define DECLSPECIFIER __declspec(dllimport)
# define EXPIMP_TEMPLATE extern
#endif
EXPIMP_TEMPLATE template class DECLSPECIFIER CdllTest<int>;
ファイル:template_export_test.cpp
template<class T>
CdllTest<T>::CdllTest(T t)
: _t(t)
{
std::cout << _t << ": init\n";
}
は、テストアプリケーションを作成します。
- と呼ばれるWin32コンソールアプリケーションを作成するためのウィザードを使用します。
driver
- 編集このプロジェクトのリンカのプロジェクト設定:リンカ>一般>追加のライブラリディレクトリに追加
- :パス
template_export_test.lib
にします
- は、リンカ>入力>追加の依存に追加:
template_export_test.lib
- は、メインのCPPファイル内
template_export_test.h
#include "c:\Documents and Settings\...\template_export_test.h"
using namespace std;
int main(int argc, char** argv) {
CdllTest<int> c(12);
}
"Bを使用したい私の.cppファイルに下記のコードを追加しようとしましたが、何を発見しましたか?間違いをしましたか?何が起こったのか、それをあなたの質問に入れることができますか? –