Skip to content

export.h

mutouyun edited this page Dec 9, 2025 · 1 revision

export.h

#include "libipc/export.h"

定义库导出宏,用于动态库和静态库的符号可见性控制。

定义的宏

IPC_EXPORT

#ifdef LIBIPC_LIBRARY_SHARED_BUILDING__
#  define IPC_EXPORT IPC_DECL_EXPORT
#elif defined(LIBIPC_LIBRARY_SHARED_USING__)
#  define IPC_EXPORT IPC_DECL_IMPORT
#else
#  define IPC_EXPORT
#endif

符号导出/导入宏,根据编译模式自动选择合适的声明。

编译模式 宏定义 用途
LIBIPC_LIBRARY_SHARED_BUILDING__ IPC_DECL_EXPORT 编译动态库时导出符号
LIBIPC_LIBRARY_SHARED_USING__ IPC_DECL_IMPORT 使用动态库时导入符号
其他(静态库) 静态链接,无需导出/导入

平台相关实现

Windows (MSVC/MinGW)

#define IPC_DECL_EXPORT __declspec(dllexport)
#define IPC_DECL_IMPORT __declspec(dllimport)

Linux / FreeBSD / Unix

#define IPC_DECL_EXPORT __attribute__((visibility("default")))
#define IPC_DECL_IMPORT __attribute__((visibility("default")))

使用说明

通常不需要直接使用这些宏,库的公开API已经正确标记了IPC_EXPORT

编译动态库

# Linux/FreeBSD
g++ -shared -DLIBIPC_LIBRARY_SHARED_BUILDING__ -o libipc.so *.cpp

# Windows (MSVC)
cl /LD /DLIBIPC_LIBRARY_SHARED_BUILDING__ /Fe:ipc.dll *.cpp

使用动态库

# 编译时定义
g++ -DLIBIPC_LIBRARY_SHARED_USING__ -o myapp main.cpp -lipc

静态链接

# 不需要特殊定义
g++ -o myapp main.cpp -lipc

相关文档

Clone this wiki locally