动态库使用示例代码
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;
}
动态调用方式的示例:
相对于静态库来说动态库的使用比较复杂一些。
这里将网上看到的一点内容总结下,方便日后学习:
-------------------------
该工程和下面的测试工程在同一个解决方案中
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;
}
相关文章推荐
- php示例代码之使用mysql_fetch_object函数
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- js禁止页面使用右键(简单示例代码)
- 使用Spark MLLib的PrefixSpan算法示例代码
- 《Unix网络编程卷1》笔记(1):第一章简介——使用Cygwin运行示例代码
- WebKit开发实战(一):在WPF中使用WebKit控件(含示例代码)
- 使用jquery.upload.js实现异步上传示例代码
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- LIBSVM在MATLAB中的使用及SVM最优参数选取示例代码
- Java使用设计模式中迭代器模式构建项目的代码结构示例
- php示例代码之使用mysqli对象
- vue2.0项目中使用Ueditor富文本编辑器示例代码
- VUE JS 使用组件实现双向绑定的示例代码
- Python中使用插入排序算法的简单分析与代码示例
- Python中使用插入排序算法的简单分析与代码示例
- STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
- new、abstract、virtual、override,sealed关键字区别和使用代码示例
- js 判断浏览器使用的语言示例代码
- 示例代码中的 SlidingTabLayout 简单使用(二)
- 使用jquery解析XML示例代码