C++中对Lib及Dll的链接调用
来源:互联网 发布:淘宝怎么设置全场包邮 编辑:程序博客网 时间:2024/06/05 02:11
首先介绍静态链接库*.lib的链接
Step1.创建一个lib文件
//lib.h#ifndef _LIB_H#define _LIB_Hint add(int a = 0,int b = 0);#endif
//lib.cpp#include "lib.h"int add(int a,int b){return a+b;}
Step2.在main函数中调用lib #pragma comment(lib,"..\\debug\\libTest.lib")
#include "..\\libTest\\lib.h"#include <iostream>using namespace std;#pragma comment(lib,"..\\debug\\libTest.lib");//与指定的*.lib库链接int main(int argc,char **argv){ cout <<add(3,5)<<endl;//直接使用lib库中的函数}
动态链接库Dll的链接
Way1.动态链接方式
Step1.在*.h中声明那个函数是DLL导出函数,供应用程序使用,否则是DLL内部函数,只能DLL内部调用
extern"C" int __declspec(dllexport) add(int a = 0,int b =0);//声明库文件中的add函数为导出函数,注意这里的“extern ‘C’ ”是为了向上兼容,如果源文件(lib.cpp)是.c文件就不加
//DllTest.h#ifndef _DLLTEST_H#define _DLLTEST_Hextern"C" int __declspec(dllexport) add(int a = 0,int b =0);#endif
//DllTest.cpp#include "DllTest.h"int add(int a,int b){return a+b;}
Step2.在main中使用Dll
主要有三步:LoadLibary("*.dll")加载DLL模块;
GetProcAddress();
FreeLibrary();
#include <Windows.h>#include <iostream>using namespace std;typedef int (*pfn)(int,int);//定义一个函数指针,同库中导出函数同参,同返回值int main(int argc,char **argv){HINSTANCE hDll;pfn pfnadd;hDll = ::LoadLibrary("..\\Debug\\DllTest.dll");//动态加载DLL模块,并将模块句柄赋给hDllif (hDll != NULL){ pfnadd = (pfn)GetProcAddress(hDll,"add");//得到所加载的DLL模块中的add函数地址 if (pfnadd !=NULL) {cout<< pfnadd(2,3)<<endl; }}FreeLibrary(hDll);//使用完后释放资源return 0;}
Way2.DLL的静态调用方式 ------在编译时加载DLL,程序结束后卸载DLL
Step1.将*.lib与*.dll拷贝至项目目录下
Step2.main程序中
#pragma comment(lib,"DllTest.lib");//lib文件是其对应的dll文件中函数重定位信息
extern"C" int __declspec(dllimport) add(int,int);
#include <iostream>using namespace std;#pragma comment(lib,"DllTest.lib");extern"C" int __declspec(dllimport) add(int,int);int main(int argc, char **argv){cout<<add(3,4)<<endl;//直接使用库函数return 0;}
【热爱工作,热爱生活】
- C++中对Lib及Dll的链接调用
- VS2008中LIB和DLL的创建及调用
- VS2008中LIB和DLL的创建及调用
- C++ 调用DLL方法 及 DLL与lib的区别
- lib和dll中全局变量的链接性及用法总结
- lib和dll中全局变量的链接性及用法总结
- Delphi 中动态链接库(dll)的建立和使用 (c下的LIB和Dll相似)
- 在自己构造的DLL动态链接库中调用winmm.lib的mciSendString函数有问题
- MFC模块的动态链接库DLL以及静态链接库LIB编译后的调用
- MFC模块的动态链接库DLL以及静态链接库LIB编译后的调用
- dll静态调用-修改lib中dll名称就能改变调用dll的名称
- vc调用动态链接库DLL和静态链接库Lib的四种方法
- dll 与 lib 的调用
- 应用程序调用dll组件,及dll组件之间的关系,dll中类及函数的导入导出;dll的导出方式和链接方式分析(一)
- C++ 加载dll 及调用lib 和 dll的 方法 和 动态库DLL与静态库lib的区别
- SAS中调用动态链接库(C++,DLL)
- python中调用动态链接库(C++,DLL)
- 在C#中调用C语言写的动态链接库 DLL
- freemarker数字默认不加逗号
- 配置ovirt-vdsm桥接网络 系统fedora 19
- DLL动态库,LIB静态库
- 危险代码:内存中的Java类和对象为何变得不安全—Part1
- 抓取数据需要注意什么
- C++中对Lib及Dll的链接调用
- 公司间INVOICE的库存设置
- WCF实例
- Mysql如何添加用户并对其授权
- activaity跳转
- iOS-GCD的学习记录(3)
- 推荐一些很棒的Bootstrap后台模板
- 跨业务实体内部销售订单设定介绍
- oracle 11g 导入表时 提示 ***值太大错误