我正在为基于CMake的Windows,Linux / Unix构建C ++库。 我在Windows上创建了一个共享库(.dll),我想在Linux / Unix上使用静态库(.a)。
在Windows上,我知道如何为我要导出的每个函数和类执行__declspec(dllexport/dllimport)
。
然后我最近看到了这些文章。 (https://blog.kitware.com/create-dlls-on-windows-without-declspec-using-new-cmake-export-all-feature/)
我尝试在库函数中构建没有__declspec()
的CMakeLists.txt,如本文所述。
include(GenerateExportHeader)
generate_export_header(mylibrary)
根据文章,为了在类中导出静态成员变量,有必要根据现有方法创建导出头,并声明变量如下。
#include <mylibary_export.h>
class MyClass
{
static mylibrary_EXPORT int GlobalCounter;
...
}
库已成功编译,但尝试在下游项目中引用此GlobalCount
变量会导致LINK错误。
你对这个问题有什么看法吗?