介绍两种在c++中调用dll的方法

来源:互联网 发布:linux 电源按钮 锁定 编辑:程序博客网 时间:2024/05/16 01:20

一.关于不带有lib文件的dll的调用方法:
 在调用程序中加入以下代码:

 //定义一个函数指针
 typedef void (  * TULIPFUNC )(void); 

 //定义一个函数指针变量
 TULIPFUNC tulipFunc; 

 //加载我们的dll
 HINSTANCE hinst=::LoadLibrary("COM_1.dll");  
 
 //找到dll的tulip函数
 tulipFunc=(TULIPFUNC)GetProcAddress(hinst,"tulip"); 

 //调用dll里的函数
 tulipFunc();   
这种方法比较适合系统函数的调用,因为系统只提供dll,而不提供.lib文件


二. 带lib文件的dll的创建及调用方法:
1. 创建一个dll,添加一个头文件,如header.h
头文件中添加一个需要导出的方法:extern "C" __declspec(dllexport)  void test(void);   
2. 在dll主程序中包含头文件(如header.h),并且添加对头文件中申明的需要导出方法的实现:
#include "header.h"
extern "C" __declspec(dllexport)  void test(void)
{
 ::MessageBox(NULL,"ok","I''am fine",MB_OK);
}
3.这样创建的dll将包含lib文件,创建一个测试程序,在主程序中加入以下代码:

#include "header.h" //包含头文件
//注意路径,加载 Test.lib 的另一种方法是 Project | setting | link 设置里
#pragma comment(lib,"Test.lib")
int main(void)
{
 test();//只要这样我们就可以调用dll里的函数了
 return 0;
}

lib和dll的区别:Lib文件是dll输出符号文件。如果一个dll没有任何东西输出那么不会有对应的lib文件,但只要一个dll输出一个变量或函数就会相应的lib文件。总的说来,dll与lib是相互配套的。

0 0
原创粉丝点击