博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VC6中dll的创建和使用
阅读量:4111 次
发布时间:2019-05-25

本文共 1103 字,大约阅读时间需要 3 分钟。

//-----------------------------------------------------------

//+ funs.h

#ifdef MyAPI

#else

#define MyAPI extern "C" __declspec(dllimport)    //注意在vc6这里如果去掉extern “C”则在调用过程中取不到函数地址,原因暂时不知

#endif

...

//- funs.h

//------------------------------------------------------------



//------------------------------------------------------------

//+funs.cpp

#define MyAPI extern "C" __declspec(dllexport)    //注意在vc6这里如果去掉extern “C”则在调用过程中取不到函数地址,原因暂时不知

#include "funs.h"

...

//-funs.cpp

//---------------------------------------------------------------


    创建dll主要想得到的结果为三个文件:.h文件、.lib文件和.dll文件。.h文件提供dll函数的原型说明,方便程序员

了解dll所提供的功能和提供程序编译的需要;.lib文件提供输出函数的信息,主要在连接阶段使用;.dll文件主要提供函

数执行体。dll可以隐式加载和显式加载,显式加载时,.h文件和.lib文件不是必须的。隐式加载比较简单,包含头文件,

引入库文件然后直接引用函数就可以了。本例子只说明显式加载的情况.

    显式加载dll的使用过程主要有以下步骤:

    1.加载dll    

    2.获取函数或符号的地址

    3.引用函数或符号

    4.卸载dll

详细情况情参考main函数的代码:

#include "windows.h"

#include <stdio.h>

typedef void (*Func)();


int main()

{

    HINSTANCE hdll = LoadLibrary("..\\Debug\\T1017DLL.dll");//加载dll

    if(hdll != NULL)

    {

         Func fun1 = (Func)GetProcAddress(hdll,"print_dll");//获取函数地址

         fun1();    //引用函数

        FreeLibrary(hdll);//卸载dll

    }

    return 0;

}

转载地址:http://zmosi.baihongyu.com/

你可能感兴趣的文章
JavaSE_day_03 方法
查看>>
day-03JavaSE_循环
查看>>
Mysql初始化的命令
查看>>
day_21_0817_Mysql
查看>>
day-22 mysql_SQL 结构化查询语言
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>
HTML&CSS进阶
查看>>
Servlet进阶和JSP基础
查看>>
servlet中的cookie和session
查看>>
过滤器及JSP九大隐式对象
查看>>
软件(项目)的分层
查看>>
菜单树
查看>>
MySQL-分布式架构-MyCAT
查看>>
设计模式六大原则(6):开闭原则
查看>>
阿里面试总结--JAVA
查看>>
Servlet的生命周期
查看>>
JAVA八大经典书籍,你看过几本?
查看>>
《读书笔记》—–书单推荐
查看>>