今日は、独自の動的ライブラリを作成したいと考えていました。VC++ 2010 を使用しています。コンソールの例 ( http://msdn.microsoft.com/en-us/library/ms235636%28v=vs.80%29.aspxから) を適用しようとしましたが、失敗し続けます。私が従う手順は次のとおりです。
- Win32 プロジェクトを作成し、空のプロジェクト、ウィザードから DLL を選択します。
でヘッダーを作成します
// FILE: bday.h #ifndef BDAY_H_ #define BDAY_H_ #ifdef BUILD_DLL #define PORT_DLL __declspec(dllexport) #else #define PORT_DLL __declspec(dllimport) #endif namespace Tests { public class BDay { public: static PORT_DLL double Foo(double); }; }; #endif
- そのクラスを実装する .cpp を作成し、
- 成功したこのプロジェクトをビルドします。
それから私は一緒に行きます
- Windows フォーム プロジェクトを作成し、以前に作成した .dll への参照を追加し、
- 前のプロジェクトの bday.h をインクルードします。
- BUILD_DLL 定数を定義し、
- クリックすると Tests::BDay::Foo を呼び出すボタンを追加します。
このプロジェクトを構築すると、
1>CoreResGen:
1> Processing resource file "Form1.resX" into "Debug\generatory2.Form1.resources".
1>generatory2.obj : error LNK2028: unresolved token (0A00000F) "public: static double __cdecl Tests::BDay::Foo(double)" (?Foo@BDay@Tests@@$$FSANN@Z) referenced in function "private: void __clrcall generatory2::Form1::button4_Click(class System::Object ^,class System::EventArgs ^)" (?button4_Click@Form1@generatory2@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
1>generatory2.obj : error LNK2019: unresolved external symbol "public: static double __cdecl Tests::BDay::Foo(double)" (?Foo@BDay@Tests@@$$FSANN@Z) referenced in function "private: void __clrcall generatory2::Form1::button4_Click(class System::Object ^,class System::EventArgs ^)" (?button4_Click@Form1@generatory2@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
1>C:\Users\Patryk\Documents\Visual Studio 2010\Projects\generatory2\Debug\generatory2.exe : fatal error LNK1120: 2 unresolved externals
私が間違っていることがあるはずです。エラーがどこにあるのか指摘してもらえますか?