C++ DLL学习笔记

来源:互联网 发布:linux 查看路由表 编辑:程序博客网 时间:2024/05/30 05:02

 

DLL ONE

1.新建一个空的DDL工程
2.新建一个源文件。
3.添加代码

 _declspec(dllexport) int add(int x,int y) {  return  x+y; }

4.编译.. 产生dll,lib,exp文件.
5.使用  dumpbin -exports ddl1.dll 查看导出函数信息.


DLL TWO

1.新建一个空的DDL工程
2.新建一个头文件,源文件。
3.添加代码

 //头文件代码

#ifndef DLL1_API #else  #define DLL1_API extern "C" _declspec(dllexport) #endif  DLL1_API int add(int x,int y);

//源文件代码

 #define DLL1_API extern "C" _declspec(dllexport) #include "ddl1.h"   int add(int x,int y) {  return x+y; }

4.编译.. 产生dll,lib,exp文件.
5.使用  dumpbin -exports ddl1.dll 查看导出函数信息.

 
 DLL THREE
 
 语句块: def文件
 
头文件

int add(int x,int y);

 

源文件

#include "ddl1.h"int add(int x,int y){return x+y;}


 

def文件

  EXPORTS add


 

 


测试一
1.新建一MFC工程
2.添加BUTTON,并导入LIB #pragma comment(lib,"ddl1.lib"),复制LIB,DLL到测试工程中。
3.为BUTTON编写代码

//extern int add(int x,int y);_declspec(dllimport)  int add(int x,int y);void CTestdll1Dlg::OnButtonAdd() { CString str; sprintf(str.LockBuffer(),"1+2=%d",add(1,2)); MessageBox(str);}

 

测试二

 //extern int add(int x,int y); //_declspec(dllimport)  int add(int x,int y); void CTestdll1Dlg::OnButtonAdd()  {  /*CString str;  sprintf(str.LockBuffer(),"1+2=%d",add(1,2));  MessageBox(str);*/   HINSTANCE hInst=LoadLibrary("ddl1.dll");  typedef int (*ADDPROC)(int x,int y);  ADDPROC Add=(ADDPROC)GetProcAddress(hInst,"add");  if(!Add)  {   MessageBox("获取函数地址失败!");   return;  }  CString str;  str.Format("5+3=%d",Add(5,3));  MessageBox(str);  FreeLibrary(hInst); }