码海拾遗

但行好事,莫问前程

导航

C++ 调用DLL

【1】静态调用
把TestDLL.lib和TestDLL.dll拷贝到你的测试工程下
你的dll声明方法_declspec(dllexport)是想要静态调用dll,所以需要添加如下代码:
//*/

#pragma#pragma comment(lib,"TestDLL.lib") /*(1)包含库文件,不写这句话,就需要通过程序配置包含这个库*/
_declspec(dllimport) int clFun(int a, int b);/*(2)声明函数是从dll中调用的,不写这句话,就需要包含头文件*/

void main()
{
int a = 1,b = 2,c =0;
c = clFun(a,b);
}

/*
【2】动态调用

你想用LoadLibrary方法,就属于动态调用,这时可以不加你的声明_declspec(dllexport),只需要在TestDLL工程目录下的.def文件中把你要调用的函数名加进去

; TestDLL.def : 声明 DLL 的模块参数。
LIBRARY "TestDLL"
EXPORTS
; 此处可以是显式导出
clFun

接下来TestDLL.dll拷贝到你的测试工程下,添加如下代码:
//*/

void main()
{
int a = 1,b = 2,c =0;

//定义一个函数指针函数指针
typedef int (* Any_name)(int param1, int param2);

//定义一个函数指针变量指针变量
Any_name pfFuncInDll = NULL;

//加载dll
HINSTANCE hinst=LoadLibrary(L"TestDLL.dll");

if ( hinst != NULL )
{
//找到dll的clFun函数
pfFuncInDll = (Any_name)GetProcAddress(hinst, "clFun");

//调用dll里的函数
if (pfFuncInDll != NULL )
{
c = pfFuncInDll(a,b);
}
FreeLibrary(hinst);
}
}

posted on 2016-03-14 11:13  widrin  阅读(322)  评论(0)    收藏  举报