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!

 
 
 
 
 
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章