调用DLL有两种方法:静态调用和动态调用.
(一).静态调用其步骤如下:
1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的目录下;
2.把你的youApp.lib拷到你目标工程(需调用youApp.DLL的工程)目录下;
3.把你的youApp.h(包含输出函数的定义)拷到你目标工程(需调用youApp.DLL的工程)目
录下;
4.打开你的目标工程选中工程,选择Visual C++的Project主菜单的Settings菜单;
5.执行第4步后,VC将会弹出一个对话框,在对话框的多页显示控件中选择Link页。然
后在Object/library modules输入框中输入:youApp.lib
6.选择你的目标工程Head Files加入:youApp.h文件;
7.最后在你目标工程(*.cpp,需要调用DLL中的函数)中包含你的:#include "youApp.h"
注:youApp是你DLL的工程名。
(二)、动态调用其程序如下:
动态调用时只需做静态调用步骤1.
{
HINSTANCE hDllInst = LoadLibrary("youApp.DLL");
if(hDllInst)
{
typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD);
MYFUNC youFuntionNameAlias = NULL; // youFuntionNameAlias 函数别名
youFuntionNameAlias = (MYFUNC)GetProcAddress
(hDllInst,"youFuntionName");
// youFuntionName 在DLL中声明的函数名
if(youFuntionNameAlias)
{
youFuntionNameAlias(param1,param2);
}
FreeLibrary(hDllInst);
}
}
显式(静态)调用:
LIB + DLL + .H,注意.H中dllexport改为dllimport
隐式(动态)调用:
DLL + 函数原型声明,先LoadLibrary,再GetProcAddress(即找到DLL中函数的地址),不用后FreeLibrary
分享到:
相关推荐
VC6中调用dll文件中的函数_傻瓜式教程
VC 实验代码,测试调用DLL动态库中的函数,本代码将学习动态链接库程序的编写。静态库与动态库的区别,以及调用程序在链接静态库和动态库时的区别。如何利用工具查看动态链接库输出的函数,Depends工具的使用,C ...
示范如何使用 LoadLibrary(...) 和 GetProcAddress(....)调用dll的输出函数.
DLL函数调用:(获取函数地址)DLL函数调用:(获取函数地址)DLL函数调用:(获取函数地址)
VC 在ActiveX中动态调用外部DLL函数,演示如何在ActiveX控件中动态调用来自外部的DLL函数,虽然不常用,研究学习一下也不多余哦,里面有两个调用DLL的例子。
VS2015项目中,MFC内存中调用DLL函数(VC6生成的示例DLL).用VC6如何生成DLL,用工具WinHex取得DLL全部内容,VC2015项目加载内存中的DLL函数,并调用函数的示例
描述了如何从vc中调用dev-c++写的dll的过程与方法。 1、设置导出关键字__stdcall 2、修改vc调用方式为stdcall 3、实现函数调用call
基于VC调用DLL中的函数,实现控制板卡功能
Python中调用C++dll例子,使用python中的ctypes。
调用DLL中的函数演示代码,并通过本人vc6试测。
VC手动解析PE文件调用DLL函数(资源+文件) 详情http://blog.csdn.net/wangningyu/article/details/8716586
https://blog.csdn.net/qq_29542611/article/details/86618902 C/C++:Windows编程—调用DLL程序的2种方法 示例demo
由于我们经常要调用一些第三方厂商或其他编译器编写的动态链接库,但是一般都不提供源文件或.lib文件,而作为VC隐式链接到DLL(implicitlylinktotheDLL)调用,这些却是必需的。本文将主要讨论在没有源文件及.lib...
示范如何使用 LoadLibrary(...) 和 GetProcAddress(....)调用dll的输出函数.作者 郝汉e-mail h129203@ 关键字:dll,call,function,
详细描述Delphi 调用VC生成的DLL的方法,并有函数说明
利用VC++6.0制作DLL,实现跨语言的函数调用,DLL显然是很重要的内容。
使用VC6.0实现查看dll导出函数名的C++源代码,供参考。
直到真正运行的时候,应用程序才会从lib文件中记录的DLL名字去搜索同名的DLL,然后将DLL的执行代码内存映射到exe中来。动态链接库的好处是多个应用程序可以共用一份DLL的代码段内存。但是数据段则是每个调用进程一份...
调用dll后直接使用函数名称-要之前知道函数名
HMODULE hModule=::LoadLibrary("DbgHelp.dll"); if(hModule==NULL) return; PFNEXPORTFUNC ImageRvaToVax=NULL; ImageRvaToVax=(PFNEXPORTFUNC)::GetProcAddress(hModule,"ImageRvaToVa"); if...