C++:动态链接库(dll)的编写,__declspec 用法详解
在 Windows 平台下编写 C++ 动态链接库 (DLL) 时,__declspec
是一个关键特性,用于控制符号的导入导出行为。以下是完整的编写指南:
1. 基本结构
头文件示例 (MyLibrary.h),宏定义MYLIBRARY_API可以任意命名,无需与头文件名一致,但是必须所有的宏定义一致。
// 防止头文件重复包含
#pragma once// 定义跨平台的导入导出宏
#ifdef MYLIBRARY_EXPORTS#define MYLIBRARY_API __declspec(dllexport)
#else#define MYLIBRARY_API __declspec(dllimport)
#endif// 导出函数
MYLIBRARY_API int AddNumbers(int a, int b);// 导出类
class MYLIBRARY_API MyExportedClass {
public:MyExportedClass();~MyExportedClass();void DoSomething();int GetValue() const;private:int m_value;
};// 导出变量
extern MYLIBRARY_API int g_exportedVar;