How To:建立Win32 Dynamic-Link Library 【转】

   

打开Visual C++6.0,选择Win32 Dynamic-Link Library;

新建一个名为dlltestproject, 根据向导选择 “a simple DLL project”,这样就免去了自己写默认代码的麻烦。

打开dlltest.cpp文档,里面的默认代码如下:

#include "stdafx.h"

 
 

BOOL APIENTRY DllMain( HANDLE hModule,

                       DWORD ul_reason_for_call,

                       LPVOID lpReserved

                                         )

{

    return TRUE;

}

 
 

通常情况下,我们会把代码修改如下:

BOOL APIENTRY DllMain( HANDLE hModule,

                       DWORD ul_reason_for_call,

                       LPVOID lpReserved

                                         )

{

        switch(ul_reason_for_call)

        {

        case DLL_PROCESS_ATTACH:

        case DLL_THREAD_ATTACH:

                break;

        case DLL_THREAD_DETACH:

        case DLL_PROCESS_DETACH:

                break;

        }

 
 

    return TRUE;

}

 
 

如对这部分有问题,可以在MSDN中搜索 “dllmain”来参考。

dlltest.cpp中加入自定义的函数,比如:

void _declspec(dllexport) hello()

{

MessageBox(NULL,"helloworld","OK",MB_OK);

}

其中,_declspec(dllexport)VC++提供的一个关键字,用它可在动态连接库中输出一个数据、

一个函数或一个类。用这个关键字可省.DEF文件.

 
 

再建立一个dlltest.h,将我们自定义的函数声明如下,以便其他程序调用:

_declspec(dllimport) void hello();

编译后,我们得到dlltest.dlldlltest.lib

 
 

下面我们来调用dlltest.dll中的函数。

选择Win32 Application, 新建一个名为testProject. 根据向导选择a simple Win32 application(也是为了免去写默认代码的麻烦)

 
 

test.cpp中修改代码如下:

#include "stdafx.h"

#include "dlltest.h"

 
 

int APIENTRY WinMain(HINSTANCE hInstance,

                     HINSTANCE hPrevInstance,

                     LPSTR     lpCmdLine,

                     int       nCmdShow)

{

        hello();

        return 0;

}

 
 

并将dlltest.hdlltest.libdlltest.dll加入到test的目录下,并将dlltest.hdlltest.lib加入工程,

编译通过,运行,结果会弹出一个显示”helloworld”messagebox!

 

 

 

 

 

 

 

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值