一直调用别人写的动态库,也不知道到底是什么是动态主库,今天没事自己用VC6.0写个(纯粹练手,高手就不要看了),心得:Code wins arguments.代码胜于雄辩!---FaceBook
非常简单:一、新建动态库;二、调用自己写的动态库(两种方式);
一、vc6新建一个动态链接库工程(FirstDemo)
1、头文件(FD.h)
/*声明接口函数*/
extern "C" _declspec(dllexport) int Sum(int a,int b);//加法
extern "C" _declspec(dllexport) int Max(int a,int b);//取最大值
2、Cpp文件(FD.cpp)
#include "FD.h"
/*实现接口函数*/
extern "C" _declspec(dllexport) int Sum(int a,int b){
return a+b;
}
extern "C" _declspec(dllexport) int Max(int a,int b){
if(a>b) return a;
else return b;
}
二、vc6新建一个测试生成的FirstDemo.dll 的Win32 Console Application工程(TestDll)
/*两种方式测试*/
1、头文件(YSDY.h)---隐式调用 测试
/**
*隐式链接方式调用dll,首先将xxx.dll和 xxx.lib文件放到Debug 文件夹下。然后#pragma comment(lib,"./Debug/xxx.lib")
*此方式特点:在程序一开始执行的时候,就将dll文件全部加载到程序中,不会释放。所以......
*/
#pragma comment(lib, "./Debug/FirstDemo.lib")
int testYS();
2、Cpp文件(YSDY.cpp)---隐式调用 cpp
#include <windows.h>
#include <iostream.h>
/*隐式链接方式调用dll中方法,不要忘记声明dll中的函数*/
extern "C" _declspec(dllimport) int Sum(int a,int b);
int testYS(){
int c=Sum(4,8);//调用处。
cout<<c<<endl;
return 0;
}
3、头文件(XSDY.h)---显示调用 测试
int test();
4、Cpp文件(XSDY.cpp)---显示调用 cpp
#include <iostream.h>
#include <windows.h>
/**
*对dll中的函数进行显式调用
*推荐使用这种方式 调用dll
*/
int test(){
typedef int(*pSum)(int a,int b);//函数指针类型 pSum
pSum sum=NULL;
HINSTANCE hDLL=NULL;
hDLL=LoadLibrary("FirstDemo.dll");//加载动态库文件FirstDemo.dll ,得到动态库句柄
sum=(pSum)GetProcAddress(hDLL,"Sum"); //得到函数句柄(指针)
if(sum){
int A=sum(2,7);
cout<<A<<endl;
}
FreeLibrary(hDLL);//卸载FirstDemo.dll文件;
return 0;
}
5、入口main
#include <windows.h>
#include <iostream.h>
#include "XSDY.h"
#include "YSDY.h"
/**
*工程入口函数
*/
void main(void){
test();//dll中方法显示调用
testYS();//隐式链接
}
代码:在附件里有两个工程:第一个是dll工程,第二个是调用dll的测试工程。
太晚了,睡觉了。。。。
分享到:
相关推荐
【DLL编写入门教程】 DLL(Dynamic Link Library)是Windows操作系统中的一个重要组成部分,它是一种动态链接库,允许开发者将代码和数据封装在一起,供多个应用程序共享使用。DLL的优点主要体现在内存管理、软件...
DLL 程序编写教程入门与提高 DLL(Dynamic Link Library)是一种软件组件,允许不同的应用程序共享代码和资源。DLL 程序编写教程入门与提高将为读者提供一个详细的 DLL 编写教程,从基本概念到高级技术,涵盖 DLL ...
### C++ DLL编写入门 #### 一、DLL的重要性与特性 动态链接库(Dynamic Link Library,简称DLL)自微软推出16位Windows操作系统以来,便成为Windows生态系统中不可或缺的一部分。DLL文件承载着丰富的函数和数据,...
DLL 编写教程 Windows 中 DLL 的编写入门手册 本资源为 Windows 中 DLL 的编写入门手册,详细讲述了如何编写 DLL。DLL(Dynamic Link Library)是一种软件组件,即动态链接库,是一种可被多个应用程序共享的库文件...
3) 跨语言支持:DLL可以被多种编程语言调用,如C编写的DLL可以被VB等其他语言使用。虽然DLL在这方面有一定的局限性,但后来的COM(Component Object Model)技术进一步优化了这一问题,使得跨语言交互更为灵活。 ...
讲解通达信DLL与通达信调用过程 4。讲解编写 DLL 要用到的C++基础知识 5。讲解 MA 简单移动平均函数的编写 (提供源代码) 6。讲解 EMA 加权移动平均线函数的编写 (提供源代码) 7。讲解 综合运用代码实现复杂的...
【C++ DLL 编写入门】 DLL(Dynamic Link Library)是Windows操作系统中广泛使用的一种库文件格式,它允许多个应用程序共享代码和资源,从而优化内存使用和提高软件开发效率。DLL文件包含了函数、类和资源,可以被...
本文详细介绍了如何使用PHP调用一个由C#编写的DLL,包括创建DLL、配置PHP环境以及编写测试脚本等关键步骤。这种方法为PHP开发者提供了一种强大的途径来扩展其功能,并充分利用其他语言编写的库。在实际应用中,可能...
4. C++与C的接口(extern"C"):文档中出现了extern"C"的使用,这是为了确保在C++编译环境中能够正确调用C语言编写的函数。当C++代码需要调用C语言库时,通常需要使用extern"C"来防止C++的名称修饰(name mangling)...
### C++ DLL 编写入门:理解与实践 #### 前言 随着Windows操作系统的迭代,动态链接库(Dynamic Link Library,简称DLL)成为其不可或缺的组成部分。无论是字体、图标展示,还是用户界面处理,乃至核心API函数,...
- 添加一个新的C文件(例如:“testlxdll.c”),并在其中编写调用代码: ```c #include "head.h" int main() { myFunction(); return 0; } ``` 确保正确配置了项目属性,以便链接器能找到`.lib`文件。 #### ...
讲解通达信DLL与通达信调用过程 4。讲解编写 DLL 要用到的C++基础知识 5。讲解 MA 简单移动平均函数的编写 (提供源代码) 6。讲解 EMA 加权移动平均线函数的编写 (提供源代码) 7。讲解 综合运用代码实现复杂的...
VB.NET自定义类库(dll)的编写和引用的简单示例 DLL(动态链接库)是一个很有用的东西,比如说,你有一段经常要用到的代码,可以...这里给出的自定义类库(dll)编写与调用的一个简单示例,以帮助初学者快速入门。
### VC编写DLL入门详解 #### 一、概述 动态链接库(Dynamic Link Library,简称DLL)是一种可被多个程序同时使用的文件,它提供了一种有效的方法来共享代码和资源。DLL 文件包含可供程序调用的功能,如绘图例程、...
1. 熟悉DLL的调用规则和函数参数,确保在编写代码时正确传递和处理数据。 2. 对于不同软件的接口,需要理解它们的异同,因为每个软件可能有自己的特性和限制。 3. 注意错误处理,确保在遇到异常情况时能够妥善处理,...
在编程领域,动态链接库(DLL)是一种共享...需要注意的是,由于不同编程语言间的差异,DLL的接口设计和调用方式可能会有所不同,因此在实际操作时要确保与DLL的文档或开发者进行沟通,以确保正确无误地传递数组参数。