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!

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(thread,null,application,文档,dll,library)