http://hi.baidu.com/metamorphosedu/blog/item/2fb360d77228e7299b502716.html

一、

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

Advertisements