创造&使用Dll的On MFC应用程序

时间:2015-11-28 17:21:48

标签: c++ visual-c++ dll mfc

我刚刚在Visual Studio 2013中创建了dll项目:
新项目 - > MFC DLL-> Next->检查“MFC Extention DLL”并完成。
现在,我添加新类:

class CMyTest
 {
  public:
CMyTest();
~CMyTest();

int Test(){ return 1; }

};

接下来,我编译了项目并得到.lib,.dll文件。

在另一个项目(使用dll的人)中,我只需添加include,lib目录并将.dll文件复制到.exe文件位置,并将.lib文件添加到Linker-> Input上的附加依赖项。
现在,我只是在我的OnInitDialog()方法中从CMyTest类创建一些对象:

CMyTest x;

当我尝试编译项目时,我收到链接错误:

Error   3   error LNK2019: unresolved external symbol "public: __cdecl CMyTest::CMyTest(void)" (??0CMyTest@@QEAA@XZ) referenced in function "protected: virtual int __cdecl CUsingDllProjectDlg::OnInitDialog(void)" (?OnInitDialog@CUsingDllProjectDlg@@MEAAHXZ)   C:\Users\user\documents\visual studio 2013\Projects\UsingDllProject\UsingDllProject\UsingDllProjectDlg.obj  UsingDllProject
Error   4   error LNK2019: unresolved external symbol "public: __cdecl CMyTest::~CMyTest(void)" (??1CMyTest@@QEAA@XZ) referenced in function "protected: virtual int __cdecl CUsingDllProjectDlg::OnInitDialog(void)" (?OnInitDialog@CUsingDllProjectDlg@@MEAAHXZ)  C:\Users\user\documents\visual studio 2013\Projects\UsingDllProject\UsingDllProject\UsingDllProjectDlg.obj  UsingDllProject

问题出在哪里?

1 个答案:

答案 0 :(得分:2)

您需要声明类似的Test方法(以及ctr,dctr):

__declspec(dllexport) int Test(){ return 1; }

__ declspec(dllexport),指示链接器将符号导出到DLL。你可以在这里阅读:https://msdn.microsoft.com/en-us/library/dabb5z75(VS.80).aspx