CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS 不涵盖全局变量

CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS does not cover global variables

提问人:Joachim W 提问时间:2/7/2019 最后编辑:Joachim W 更新时间:2/7/2019 访问量:4862

问:

将 CMake 下的 C++ 库移植到 Windows。

  • 选项 1:使用 .__declspec(dllexport)
  • 选项 2: .set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)

我们选择选项 2,因为它看起来更容易,并且保持我们的来源完好无损。 就像一个魅力:我们的应用程序编译并与库 dll 链接。

但是,它只确保类和函数的导出。导出全局变量需要做什么?比如:

lib_source.cpp:
    int my_secret;

app.cpp:
    extern int my_secret;
C++ Windows DLL CMake 全局变量

评论


答:

8赞 Mizux 2/7/2019 #1

对于全局数据符号,在针对 .dll 中的代码进行编译时,仍必须使用。__declspec(dllimport)

来源: https://cmake.org/cmake/help/latest/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.html