CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS 不包括全局变量。

问题描述 投票:1回答:1

将一个C++库,在CMake下移植到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++ shared-libraries linker-errors undefined-reference
1个回答
3
投票

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

.dll.src.中的代码时,仍然必须使用。https:/cmake.orgcmakehelplatestprop_tgtWINDOWS_EXPORT_ALL_SYMBOLS.html。

© www.soinside.com 2019 - 2024. All rights reserved.