c++ - CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS不涵盖全局变量

标签 c++ windows dll cmake global-variables

在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;
    

    最佳答案

    For global data symbols, __declspec(dllimport) must still be used when compiling against the code in the .dll.



    src:https://cmake.org/cmake/help/latest/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.html

    关于c++ - CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS不涵盖全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62300976/

    相关文章:

    c++ - QMap/QHash operator[] 返回引用有效性

    c++ - 是否有静态分析器可以检查 C/C++/Objective-C 中的局部变量重新分配?

    Windows 中依赖重叠 io 的编码模式

    c++ - 在调试或 Release模式下使用 DLL?

    c++ - COM 代码库位置 - 如何选择要使用的版本?

    c++ - 为什么在 gcc 中允许带有 std::string 的模板化 constexpr?

    Windows 事件目录模拟器

    python - 在 Python 中检测图形驱动程序信息

    c# - 将 virtual 添加到 C# 方法可能会破坏旧客户端吗?

    c++ - 错误:无法在实现文件中绑定(bind)‘std::ostream