如何使用C/C++动态库与静态库中的宏?

  在哪个cpp文件中使用的该动态库或静态库,就在该h/cpp文件所在的工程的预处理命令中添加库中的宏。

如有库工程add,其头文件如下

#ifndef _ADD_H
#define _ADD_H

#if defined( _WIN32 ) || defined( __MINGW32__ )
#   if defined( ADD_EXPORTS )
#       define ADD_EXPORT __declspec(dllexport)
#   elif defined( ADD_USE_DLL_IMPORT ) || !defined( ADD_USE_STATIC_LIB )
#       define ADD_EXPORT __declspec(dllimport)
#   else
#       define ADD_EXPORT
#   endif

ADD_EXPORT int add(int a, int b);

#endif

则VS上编译动态库时,需要在add工程的预处理指令中增加ADD_EXPORTS。

另有测试工程test:若其要使用动态库中的add函数,则其工程中需要使用 ADD_USE_DLL_IMPORT 预处理指令。