dll导出类的实现

来源:互联网 发布:unity3d c 基础教程 编辑:程序博客网 时间:2024/05/16 12:44

首先是在dll中实现类得声明 。添加inc.h头文件

[cpp] view plaincopy
  1. class __declspec(dllexport) CPreson  
  2. {  
  3. private:  
  4.     char szName[128];  
  5.     int age;  
  6. public:  
  7.     CPreson();  
  8.     ~CPreson();  
  9.     CPreson(char* lpName,int nAge);  
  10.     friend  void CreateObj(int x);  
  11. public:  
  12.     char *GetName();  
  13.     int GetAge();  
  14. };  
在dllmain.cpp中或自定义个个inc.cpp文件实现类

[cpp] view plaincopy
  1. CPreson::CPreson()  
  2. {  
  3.   
  4. }  
  5. CPreson::~CPreson()  
  6. {  
  7. }  
  8. CPreson::CPreson(char *lpName,int nAge)  
  9. {  
  10.     this->age=nAge;  
  11.     if (lpName)  
  12.     {  
  13.         int len = strlen(lpName);  
  14.         if (len>127)  
  15.             len=127;  
  16.         memcpy(this->szName,lpName,len);  
  17.         this->szName[len] = 0;  
  18.     }  
  19. }  
  20. char *CPreson::GetName()  
  21. {  
  22.     return szName;  
  23. }  
  24. int CPreson::GetAge()  
  25. {  
  26.     return age;  
  27. }  
[cpp] view plaincopy
  1.   

********注意写好dll后 用depends查看导出函数时会发现导出的函数名不是你写的那样出现所谓的乱码入?等*************这就注定dll不能通过显示连接的方式导入。

如果想通过显示连接的方式导入可以为类添加一个友元函数去实现显示连接创建类得对象**************************************

调用dll首先要包含inc.h头文件

再隐式链接dl “ l#pragma comment(lib,"D:\\DLLSample.lib") "

[cpp] view plaincopy
  1. #include "inc.h"  
  2. #include <iostream>  
  3. using namespace std;  
  4. #pragma comment(lib,"D:\\DLLSample.lib")  
  5.   
  6. int _tmain(int argc, _TCHAR* argv[])  
  7. {  
  8.     int r= fun_add(1,2);  
  9.     printf("%d",r);  
  10.     CPreson person("zhang",23);  
  11.     cout<<person.GetName()<<endl;  
  12.     return 0;  
  13. }  
0 0