CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS 不覆盖全局变量

Joa*_*m W 5 c++ windows dll global-variables cmake

将 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;
Run Code Online (Sandbox Code Playgroud)

Miz*_*zux 8

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

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