`
ileson
  • 浏览: 215014 次
  • 性别: Icon_minigender_1
  • 来自: 河南省
社区版块
存档分类
最新评论

DLL 的编写与调用(入门)

DLL 
阅读更多
     一直调用别人写的动态库,也不知道到底是什么是动态主库,今天没事自己用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编写入门教程】 DLL(Dynamic Link Library)是Windows操作系统中的一个重要组成部分,它是一种动态链接库,允许开发者将代码和数据封装在一起,供多个应用程序共享使用。DLL的优点主要体现在内存管理、软件...

    DLL程序编写教程入门与提高.doc

    DLL 程序编写教程入门与提高 DLL(Dynamic Link Library)是一种软件组件,允许不同的应用程序共享代码和资源。DLL 程序编写教程入门与提高将为读者提供一个详细的 DLL 编写教程,从基本概念到高级技术,涵盖 DLL ...

    C++ dll编写入门

    ### C++ DLL编写入门 #### 一、DLL的重要性与特性 动态链接库(Dynamic Link Library,简称DLL)自微软推出16位Windows操作系统以来,便成为Windows生态系统中不可或缺的一部分。DLL文件承载着丰富的函数和数据,...

    DLL编写教程 windows中dll的编写入门手册

    DLL 编写教程 Windows 中 DLL 的编写入门手册 本资源为 Windows 中 DLL 的编写入门手册,详细讲述了如何编写 DLL。DLL(Dynamic Link Library)是一种软件组件,即动态链接库,是一种可被多个应用程序共享的库文件...

    Dll编写教程Dll入门必读

    3) 跨语言支持:DLL可以被多种编程语言调用,如C编写的DLL可以被VB等其他语言使用。虽然DLL在这方面有一定的局限性,但后来的COM(Component Object Model)技术进一步优化了这一问题,使得跨语言交互更为灵活。 ...

    C++ Dll 编写入门

    【C++ DLL 编写入门】 DLL(Dynamic Link Library)是Windows操作系统中广泛使用的一种库文件格式,它允许多个应用程序共享代码和资源,从而优化内存使用和提高软件开发效率。DLL文件包含了函数、类和资源,可以被...

    通达信DLL开发视频教程.zip

    讲解通达信DLL与通达信调用过程 4。讲解编写 DLL 要用到的C++基础知识 5。讲解 MA 简单移动平均函数的编写 (提供源代码) 6。讲解 EMA 加权移动平均线函数的编写 (提供源代码) 7。讲解 综合运用代码实现复杂的...

    实验用PHP调用DLL

    本文详细介绍了如何使用PHP调用一个由C#编写的DLL,包括创建DLL、配置PHP环境以及编写测试脚本等关键步骤。这种方法为PHP开发者提供了一种强大的途径来扩展其功能,并充分利用其他语言编写的库。在实际应用中,可能...

    图文手把手教你一步步用VC 2010编写通达信缠论插件(1-DLL设计入门).pdf

    4. C++与C的接口(extern"C"):文档中出现了extern"C"的使用,这是为了确保在C++编译环境中能够正确调用C语言编写的函数。当C++代码需要调用C语言库时,通常需要使用extern"C"来防止C++的名称修饰(name mangling)...

    C++Dll编写入门

    ### C++ DLL 编写入门:理解与实践 #### 前言 随着Windows操作系统的迭代,动态链接库(Dynamic Link Library,简称DLL)成为其不可或缺的组成部分。无论是字体、图标展示,还是用户界面处理,乃至核心API函数,...

    VS2012-C++编写、调用DLL库最好的教程

    - 添加一个新的C文件(例如:“testlxdll.c”),并在其中编写调用代码: ```c #include "head.h" int main() { myFunction(); return 0; } ``` 确保正确配置了项目属性,以便链接器能找到`.lib`文件。 #### ...

    通达信DLL开发视频教程

    讲解通达信DLL与通达信调用过程 4。讲解编写 DLL 要用到的C++基础知识 5。讲解 MA 简单移动平均函数的编写 (提供源代码) 6。讲解 EMA 加权移动平均线函数的编写 (提供源代码) 7。讲解 综合运用代码实现复杂的...

    VB.NET自定义类库(dll)的编写和引用的示例.rar

    VB.NET自定义类库(dll)的编写和引用的简单示例 DLL(动态链接库)是一个很有用的东西,比如说,你有一段经常要用到的代码,可以...这里给出的自定义类库(dll)编写与调用的一个简单示例,以帮助初学者快速入门。

    VC编写dll入门,适合刚学习dll的朋友看

    ### VC编写DLL入门详解 #### 一、概述 动态链接库(Dynamic Link Library,简称DLL)是一种可被多个程序同时使用的文件,它提供了一种有效的方法来共享代码和资源。DLL 文件包含可供程序调用的功能,如绘图例程、...

    股票软件二次开发dll接口及示例源代码

    1. 熟悉DLL的调用规则和函数参数,确保在编写代码时正确传递和处理数据。 2. 对于不同软件的接口,需要理解它们的异同,因为每个软件可能有自己的特性和限制。 3. 注意错误处理,确保在遇到异常情况时能够妥善处理,...

    向DLL传递数组参数的实现方法

    在编程领域,动态链接库(DLL)是一种共享...需要注意的是,由于不同编程语言间的差异,DLL的接口设计和调用方式可能会有所不同,因此在实际操作时要确保与DLL的文档或开发者进行沟通,以确保正确无误地传递数组参数。

Global site tag (gtag.js) - Google Analytics