Visual Studio 2008 创建dll 动态链接库

一、


1 在Visual C++ 里面选择Win32,新建一个Win32 Project工程,名称为mydll
2 在Application Settings窗口,Application type中选择 DLL; additional options中选择Empty project。点击完成
3 新建mydll.cpp和mydll.h两个文件
4 在mydll.h里面添加代码:
extern "C"  __declspec(dllexport) int Min(int a, int b);
5 在mydll.cpp里面添加代码:
#include "mydll.h"
#include <stdio.h>
int Min(int a, int b)
{
 printf("Min is called");


 if (a >= b) return b;


 else return a;
}
6 生成dll


7 把生成的 .lib文件拷贝到另一个工程(要调用的DLL项目)的目录下,把.dll文件拷贝到另一个工程(要调用的DLL项目)的debug目录下
8 另一个项目的调用代码如下:


#pragma comment(lib,"MyDll.lib")        //功能:编译器在link时,链接到MyDll.lib文件,也可以在projection->Setting->Link页的Object/Moduls栏填入MyDll.lib既可。


extern "C"_declspec(dllimport) int Min(int a,int b);


#include <stdio.h>


int main()


{


int a;


a = Min(8,10);


printf("比较的结果为%d",a);


return 0;


}


 


使用 __declspec(dllimport) 从 DLL 导出:http://msdn.microsoft.com/zh-cn/library/a90k134d(v=VS.80).aspx


二、


1 在Visual C++ 里面选择Win32,新建一个Win32 Project工程,名称为mydll
2 在Application Settings窗口,Application type中选择 DLL; additional options中选择Empty project。点击完成
3 新建mydll.cpp和mydll.def两个文件


4 在mydll.def里面添加代码:
LIBRARY mydll
EXPORTS
Max @1
Min @2
5 在mydll.cpp里面添加代码:
int Max(int a, int b)
{
 if(a>=b)
  return a;
 else
  return b;
}
int Min(int a, int b)
{
 if(a>=b)
  return b;
 else
  return a;
}


6 生成dll


7 把生成的 .lib文件拷贝到另一个工程(要调用的DLL项目)的目录下,把.dll文件拷贝到另一个工程(要调用的DLL项目)的debug目录下
8 另一个项目的调用代码如下:


.h


__declspec(dllimport) int Max(int a,int b);
__declspec(dllimport) int Min(int a,int b);


.cpp


#include <stdio.h>
#include "dllcall.h"


int main()
{
 int a;


 a = Max(8,10);
 printf("比较的结果为%d ",a);


 return 0;
}


9..然后配置工程属性


.dll所在的文件夹





包含关系







 


使用 DEF 文件从 DLL 导出:http://msdn.microsoft.com/zh-cn/library/d91k01sh(VS.80).aspx
三、


隐式调用就把dll拷到项目文件夹下,把dll相应的头文件加进项目就好了;显式调用是同过LoadLibrary函数加载dll,通过GetProcAddress得到想调用的函数的地址然后作一个牵制转换后就可以调用了。即:隐式调用(通过lib和头文件)和显式调用(只通过提供的dll文件)。


http://www.cppblog.com/richardhe/articles/57428.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值