今天我想制作自己的动态库。我正在使用 VC++ 2010。尝试应用控制台示例(来自http://msdn.microsoft.com/en-us/library/ms235636%28v=vs.80%29.aspx)但我一直失败。以下是我遵循的步骤:
- 创建 Win32 项目并从向导中选择 Empty Project、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
一定是我做错了什么,你能指出错误在哪里吗?