将CMake下的C++库移植到Windows。
- 选项 1:使用
__declspec(dllexport)
修饰 API。 - 选项 2:
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
.
我们选择选项 2,因为它似乎更容易,并且我们的来源保持不变。就像一个魅力:我们的应用程序编译并与库 dll 链接。
但是,它只确保类和函数的导出。导出全局变量需要做什么?比如:
lib_source.cpp:
int my_secret;
app.cpp:
extern int my_secret;
对于全局数据符号,在针对.dll中的代码进行编译时,仍必须使用
__declspec(dllimport)
。
来源:https://cmake.org/cmake/help/latest/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.html