VS2008中DLL的编写与调用

1。编写DLL

    a)文件--打开--新建项目--Win32,右侧Win32项目,填写好项目名称,点击“下一步”,

       应用程序类型选择:“DLL(D)”,附加选项:空项目(E),然后完成。

    b)编写头文件(edrlib.h):

  1. #ifdef __cplusplus 
  2. #define EXPORT extern "C" __declspec (dllexport) 
  3. #else 
  4. #define EXPORT __declspec (dllexport) 
  5. #endif 
  6.  
  7. EXPORT void  EdrCenterTextA(); 
  8. EXPORT void  EdrCenterTextW(); 
  9. EXPORT int  IncCounter(); 
  10. #ifdef UNICODE 
  11. #define EdrCenterText EdrCenterTextW 
  12. #else 
  13. #define EdrCenterText EdrCenterTextA 
  14. #endif 

注解:

    i. 定义 __cplusplus表示是供C++程序中调用。

    ii.__declspec (dllexport)表示函数调用方式,此处表示VS2008工程属性调用的默认方式。更改方法:

    右击项目--属性--配置属性--C/C++--高级,更改右侧“调用约定”。

    c)编写DLL文件(edrlib.cpp):

  1. #include "windows.h" 
  2. #include "edrlib.h" 
  3. //counter供调用该DLL的所有应用程序共享 
  4. #pragma data_seg("shared") 
  5. int counter=0; 
  6. #pragma comment(linker,"/SECTION:shared,RWS") 
  7.  
  8. int WINAPI DllMain(_In_ HANDLE _HDllHandle, _In_ DWORD _Reason, _In_opt_ LPVOID _Reserved) 
  9.     return TRUE; 
  10.  
  11. EXPORT void   EdrCenterTextA() 
  12.     MessageBox(NULL,TEXT("调用DLL函数!"),TEXT("ASSIC版本"),MB_OK); 
  13.      
  14. EXPORT void  EdrCenterTextW() 
  15.     MessageBox(NULL,TEXT("调用DLL函数!"),TEXT("UNICODE版本"),MB_OK); 
  16.  
  17.  
  18. EXPORT int  IncCounter() 
  19.     return ++counter; 

  c)编译生成DLL。

2。调用DLL

   方法一、

   1。新建Win32应用程序空项目。

   2。把生成的dll、lib这2个文件复制到新建的目录下。

   3。添加导入库:工具--项目和解决方案--VC++目录,选择右侧“显示以下内容的目录”下的“库文件”,把lib所在目录添加。

   4。头文件:edrlib.h(与编写DLL中一样)

   5。源文件:main.c

  

  1. /*#define cplusplus*/ //c++调用方式 
  2. #include "windows.h" 
  3. #include "edrlib.h" 
  4. #pragma comment(lib,"edrlib.lib") 
  5.  
  6. int WINAPI WinMain(__in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPSTR lpCmdLine, __in int nShowCmd ) 
  7.  
  8.     TCHAR buf[32]; 
  9.     wsprintf(buf,L"now,counter=%i",IncCounter()); 
  10.     MessageBox(NULL,buf,L"--",MB_OK); 
  11.     EdrCenterText(); 
  12.     return 0; 

   解释:

   可注释#pragma comment(lib,"TestDLL2.lib")这条,但必须设置链接库,方法:

   右击项目--属性--配置属性--链接器--输入--附加依赖项:edrlib.lib

  6.运行测试成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值