Tuesday, March 17, 2009

建立動態連結函式庫 - Visual C++ 2005

這是一個簡單的說明跟筆記,相關資料可參考網路上的文章
深入C++Builder 探訪動態連結函式庫 (Dynamic Linking Libraries,DLLs)
NaCl -動態連結函式庫(Dynamic Linking Libraries,DLLs)

在 VC2005 裡,可以建立的範本似乎僅有 MFC DLL 專案,
依據其說明,此專案也可建立非MFC應用程式使用的 DLL

1. 在新增專案裡直接選 "Visual C++" -> "MFC" -> "MFC DLL"
2. 設定 MFC 是採用共用 DLL 或靜態連結,目前僅測試共用DLL的類型
3.新增新類別,假設類別名稱是 test (專案自動產生的檔案可以暫時都不要理它)
test.h 檔的內容︰
#pragma once

#ifdef DLL_EXPORT
#define DLLACT __declspec(dllexport)
#else
#define DLLACT __declspec(dllimport)
#endif
// 宣告
extern "C" class DLLACT test
{
public:
test(void);
public:
~test(void);
void ShowDialog();
};

#undef DLLACT
test.cpp
#include "StdAfx.h"
#include "test.h"

test::test(void) { }

test::~test(void) { }

void test::ShowDialog()
{
AfxMessageBox("Hello World!!", NULL, MB_OK);
}
4. 編譯dll專案

5. 建立另外一個新專案,把上述編譯完成的 .dll, .lib, 及 test.h 檔複製到新專案目錄下

6. 在新專案的屬性設定中引用 .lib 函式庫

7. 在程式中引用 test.h ,並直接使用 test 類別

透過這樣的方式,就可以編譯好一個擁有 test 類別的 dll 檔,並可以在新專案中,以使用靜態函式庫的方式來使用 test 這個類別。

No comments: