调用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
分享到:
相关推荐
下面将详细介绍如何在VC++中调用DLL中的资源。 首先,让我们了解DLL的基本概念。DLL(Dynamic Link Library)是一种可执行文件,它包含可由多个程序共享的代码和数据。通过使用DLL,开发者可以减少内存占用,提高...
2. **线程安全**:如果DLL函数可能被多个线程同时调用,需要确保它们是线程安全的。 3. **内存管理**:DLL和调用程序之间可能存在内存分配和释放的不一致,需要小心处理内存分配,避免内存泄漏。 4. **进程地址...
### VC6中调用DLL文件中的函数 —— 傻瓜式教程 #### 一、基础知识及准备 在深入探讨如何在Visual C++ 6.0(简称VC6)环境中调用动态链接库(DLL)文件中的函数之前,我们需要了解一些基础知识。 **1. 什么是DLL?** ...
在VC6环境下生成和调用DLL(动态链接库)是C++编程中常见的技术,尤其对初学者来说,理解这一过程至关重要。DLL可以共享代码和数据,减少内存占用,提高程序执行效率。以下是对这个“VC6生成DLL和调用DLL的最简单...
本示例中的压缩包提供了关于如何在VC客户端应用程序中调用VB编写的DLL函数的实例。 首先,我们需要了解VB和VC之间调用DLL的基本原理。VB和VC都是Microsoft开发的编程环境,但它们的语法和底层实现有所不同。VB使用...
在VC++中,我们可以创建一个DLL项目,定义并实现一些函数,然后在另一个VC++的控制台或窗口应用程序中调用这些函数。 实例中的`TestExportClass`和`ExportClass`可能分别代表一个测试工程和实际包含导出类的DLL工程...
6. 调用DLL函数:在客户端程序中,像调用本地函数一样调用DLL中的函数,例如: ```cpp void MyDllFunction(); MyDllFunction(); ``` 7. 链接与运行:编译并链接两个项目,确保客户端程序能找到DLL文件,然后...
VC 实验代码,测试调用DLL动态库中的函数,本代码将学习动态链接库程序的编写。静态库与动态库的区别,以及调用程序在链接静态库和动态库时的区别。如何利用工具查看动态链接库输出的函数,Depends工具的使用,C ...
示范如何使用 LoadLibrary(...) 和 GetProcAddress(....)调用dll的输出函数.
在ActiveX中调用DLL函数,首先我们需要了解几个关键步骤: 1. **加载DLL**:使用`LoadLibrary`函数来加载DLL。这个函数返回一个句柄,表示已加载的库。如果DLL不存在或者加载失败,返回NULL。 2. **获取函数指针**...
这是最常见的动态调用DLL函数的方式。首先,使用`LoadLibrary`函数加载DLL,它会将DLL映像加载到进程的地址空间中。然后,通过`GetProcAddress`函数获取DLL中特定函数的地址。这种方法适用于任何未导出为标准函数...
4. 在生成的`.cpp`和`.h`文件中编写DLL函数。例如,在`MyDllClass.h`中声明一个导出函数: ```cpp #ifndef MYDLLCLASS_H #define MYDLLCLASS_H extern "C" __declspec(dllexport) void MyDllFunction(); #endif //...
要在VC中调用DLL函数,首先需要加载DLL。使用`LoadLibrary`函数加载DLL,然后使用`GetProcAddress`获取函数指针,最后通过函数指针调用实际函数。这是一个简单的示例: ```cpp #include typedef void(__...
2. **在Delphi中调用DLL**: - 在Delphi中,需要声明从DLL中导入的函数。使用`external`关键字指定函数所在的DLL文件,例如`function getPPLength: Integer; cdecl; external 'dll.dll'`和`function npn(m: integer...
本篇文章将详细讲解如何在C/C++中调用DLL程序的两种主要方法,并通过具体的示例代码来演示。 首先,我们要理解DLL的两种加载方式:隐式链接和显式链接。 1. 隐式链接: 隐式链接是在编译和链接阶段完成的。在源...
通过以上介绍,我们可以了解到在VC中调用DLL文件的两种主要方式及其具体实现细节。隐式的加载时链接适用于那些提供了完整DLL包(包括.h文件和.lib文件)的情况,而显式的运行时链接则更加灵活,尤其适合于只有DLL...
3. **调用DLL函数**:在VC++代码中,你可以像调用普通C函数一样调用DLL中的函数。例如,`return_value = MyDLLFunction(input1, input2);`。这里的`MyDLLFunction`是LabVIEW VI的导出函数名,`input1`和`input2`是...
- "在VC中DLL的调用规则.mht"可能包含了更详细的VC++中DLL调用规则的说明和示例。 - "LogOn.zip"文件可能包含了一个登录功能相关的DLL示例,可以解压后查看具体实现。 理解并熟练掌握VC++中的DLL调用规则对于开发...
然后,在VC项目中,我们需要包含`windows.h`头文件,并使用`DllImport`特性来声明C# DLL中的函数。例如: ```cpp #include extern "C" __declspec(dllimport) int __stdcall AddNumbers(int num1, int num2); ...
本文将深入探讨如何在Java中调用VC编译的DLL,并提供相关知识点的详细解释。 1. **JNI(Java Native Interface)** Java Native Interface是Java平台标准版(Java SE)的一部分,允许Java代码和其他语言写的代码...