C++ DLL 模闆
1、使用VS2005建立Win32 DLL項目,選擇空項目,然後加入CppDll.h和CppDll.cpp檔案。
2、修改CppDll.h和CppDll.cpp檔案使之成為需要的内容。
3、編譯生成CppDll.dll。
下面是模闆檔案:
//
// CppDll.h
// by cheungmine
// C++ DLL 模闆
/*** 使用CPPDLL:
#include "../CppDll.h"
#ifdef _DEBUG
# pragma comment(lib, "F:/del/CppDll/Debug/CppDlld.lib")
#else
# pragma comment(lib, "F:/del/CppDll/Release/CppDll.lib")
#endif
***/
#ifndef _CPPDLL_H__
#define _CPPDLL_H__
//#include <windows.h>
//#include <math.h>
//#include <assert.h>
//#include <memory.h>
//#include <malloc.h>
// 下列 ifdef 塊是建立使從 DLL 導出更簡單的宏的标準方法。
// 此 DLL 中的所有檔案都是用指令行上定義的 CPPDLL_EXPORTS 符号編譯的。
// 在使用此 DLL 的任何其他項目上不應定義此符号。
// 這樣,源檔案中包含此檔案的任何其他項目都會将 CPPDLL_API 函數視為是從此 DLL 導入的,
// 而此 DLL 則将用此宏定義的符号視為是被導出的。
#ifdef CPPDLL_EXPORTS
#define CPPDLL_API __declspec(dllexport)
#else
#define CPPDLL_API __declspec(dllimport)
#endif
#define CPPDLL_VERSION 1.0 // 常量定義
// 名稱空間
namespace CppDll
{
// 從 CppDll.dll 導出類
// 導出類: MyStruct
struct CPPDLL_API MyStruct
long x;
long y;
};
// 導出類: MyClass2
class CPPDLL_API MyClass2
void Clear()
{
// 實作
};
public:
MyClass2();
~MyClass2();
// 導出共享變量
extern CPPDLL_API int g_nVar;
// 導出方法
CPPDLL_API double Method(const MyStruct *s1, const MyStruct *s2);
CPPDLL_API double Method(const MyStruct &s1, const MyStruct &s2);
}; // End of namespace CppDll
#endif // _CPPDLL_H__
//
// CppDll.h
// by cheungmine
// C++ DLL 模闆
/*** 使用CPPDLL:
#include "../CppDll.h"
#ifdef _DEBUG
# pragma comment(lib, "F:/del/CppDll/Debug/CppDlld.lib")
#else
# pragma comment(lib, "F:/del/CppDll/Release/CppDll.lib")
#endif
***/
#ifndef _CPPDLL_H__
#define _CPPDLL_H__
//#include <windows.h>
//#include <math.h>
//#include <assert.h>
//#include <memory.h>
//#include <malloc.h>
// 下列 ifdef 塊是建立使從 DLL 導出更簡單的宏的标準方法。
// 此 DLL 中的所有檔案都是用指令行上定義的 CPPDLL_EXPORTS 符号編譯的。
// 在使用此 DLL 的任何其他項目上不應定義此符号。
// 這樣,源檔案中包含此檔案的任何其他項目都會将 CPPDLL_API 函數視為是從此 DLL 導入的,
// 而此 DLL 則将用此宏定義的符号視為是被導出的。
#ifdef CPPDLL_EXPORTS
#define CPPDLL_API __declspec(dllexport)
#define CPPDLL_API __declspec(dllimport)
#define CPPDLL_VERSION 1.0 // 常量定義
// 名稱空間
namespace CppDll
{
// 從 CppDll.dll 導出類
// 導出類: MyStruct
struct CPPDLL_API MyStruct
long x;
long y;
};
// 導出類: MyClass2
class CPPDLL_API MyClass2
void Clear()
// 實作
public:
MyClass2();
~MyClass2();
// 導出共享變量
extern CPPDLL_API int g_nVar;
// 導出方法
CPPDLL_API double Method(const MyStruct *s1, const MyStruct *s2);
CPPDLL_API double Method(const MyStruct &s1, const MyStruct &s2);
}; // End of namespace CppDll
#endif // _CPPDLL_H__
// CppDll.cpp
#include "CppDll.h"
// 包含其他必要檔案
// #include <vector>
using namespace CppDll;
///////////////////////////////////////////////////////////////////////////////
// struct MyStruct
// class MyClass2
MyClass2::MyClass2()
}
MyClass2::~MyClass2()
// 導出變量
CPPDLL_API int g_nVar = 0;
CPPDLL_API double CppDll::Method(const MyStruct *s1, const MyStruct *s2)
return 0;
CPPDLL_API double CppDll::Method(const MyStruct &s1, const MyStruct &s2)
// CppDll.cpp
#include "CppDll.h"
// 包含其他必要檔案
// #include <vector>
using namespace CppDll;
///////////////////////////////////////////////////////////////////////////////
// struct MyStruct
// class MyClass2
MyClass2::MyClass2()
}
MyClass2::~MyClass2()
// 導出變量
CPPDLL_API int g_nVar = 0;
CPPDLL_API double CppDll::Method(const MyStruct *s1, const MyStruct *s2)
return 0;
CPPDLL_API double CppDll::Method(const MyStruct &s1, const MyStruct &s2)