您的位置:首页 > 编程语言

动态库使用示例代码

2011-09-28 23:24 169 查看
只是入门级的代码

动态调用方式的示例:

相对于静态库来说动态库的使用比较复杂一些。

这里将网上看到的一点内容总结下,方便日后学习:

-------------------------

该工程和下面的测试工程在同一个解决方案中

lib.h文件

#ifndef __LIB_H__

#define __LIB_H__

extern "C" int __declspec(dllexport) add(int x,int y);

#endif//lib.h

lib.cpp文件

#include "lib.h"

int add(int x,int y)

{

return x+y;

}

--------------------------

main.cpp测试文件

#include <iostream>

#include <windows.h>

typedef int (*LpAddFunction)(int,int);

int main()

{

HINSTANCE hDll;//DLL句柄

LpAddFunction add_function;

hDll = LoadLibrary("..\\Debug\\lib_test.dll");

if(hDll != NULL)

{

add_function = (LpAddFunction)GetProcAddress(hDll,"add");

if(add_function != NULL)

{

int result = add_function(2,3);

std::cout<<"2 + 3 = "<<result<<std::endl;

}

FreeLibrary(hDll);

}

return 0;

}

------------------------

在上面的例子中我们看到了由系统API提供的三位一体“DLL加载-DLL函数地址获取-DLL释放”方式,这种调用方式称为DLL的动态调用

静态调用方式可以将dll库考到相应的测试工程当中,也可以实现动态库到达调用

示例工程:

//#pragma comment(lib,"..\\Debug\\lib_test.dll")

extern "C"__declspec(dllimport)int add(int x,int y);

int main()

{

int result = add(2,3);

std::cout<<"2 + 3 =???? "<<result<<std::endl;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: