dll 文件书写模板--参考之用

一、头文件

#ifdef DLL_OBJECT_EXPORTS #define DLL_OBJECT_API __declspec(dllexport) #else #define DLL_OBJECT_API __declspec(dllimport) #endif DLL_OBJECT_API void FuncInDll( void );// 外部函数 extern DLL_OBJECT_API int g_nDll;// 全局变量 class DLL_OBJECT_API CDll_Object// 类 { public: CDll_Object( void ); void show( void ); }; 

二、实现调用文件

#define DLL_OBJECT_EXPORTS // 宏声明 #include #include #include "dll_object.h" using namespace std; // 外部函数的书写方式 DLL_OBJECT_API void FuncInDll( void ) { cout << "FuncInDll is called!" << endl; } // 全局变量的书写方式 DLL_OBJECT_API int g_nDll = 9;; // 类中方法的书写方式 CDll_Object::CDll_Object( void ) { cout << "ctor of CDll_Object" << endl; } void CDll_Object::show( void ) { cout << "function show in class CDll_Object" << endl; } bool APIENTRY DllMain( HANDLE hModule, DWORD dwReason, void* lpReserved ) { HANDLE g_hModule; switch ( dwReason ) { case DLL_PROCESS_ATTACH: cout << "Dll is attached!" << endl;// 开始调用时触发 g_hModule = (HINSTANCE)hModule; break; case DLL_PROCESS_DETACH: cout << "Dll is detached!" << endl;// 结束调用时触发 g_hModule = NULL; break; } return true; } 

编译以上文件生成相应的dll,lib文件。

三、使用方法

1、将头文件加入项目中并include到要调用的程序中。

2、将生成的dll文件和lib文件拷贝到程序目录。

3、使用#pragma comment( lib, "对应库库.lib" ).

4、在书写程序的时候就可以直接调用库中的函数了。

例如:

#include "dll_object.h" #include using namespace std; //注意路径,加载 dll的另一种方法是 Project | setting | link 设置里 #pragma comment(lib,"dll_object.lib") int main(void) { cout << "Call dll!" << endl; cout << "Call function in dll" << endl; FuncInDll();// 直接调用外部函数 cout << "global var in dll g_nDll = " << g_nDll << endl;// 取得dll中全局变量的值 cout << "Call member function of class CDll_Object in dll:" << endl; CDll_Object obj;// 实例化dll类中的对象 obj.show();// 调用对象中的方法 return 0; }

 

 

你可能感兴趣的:(唐宋软件工作笔记)