CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS не охватывает глобальные переменные - PullRequest
0 голосов
/ 06 февраля 2019

Портирование библиотеки C ++ под CMake в Windows.

  • Вариант 1: Украсьте API с помощью __declspec(dllexport).
  • Вариант 2: set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON).

Мы выбираем вариант 2, так как он кажется намного проще и оставляет наши источники нетронутыми.Работает как прелесть: наше приложение компилируется и связывается с библиотекой dll.

Однако оно обеспечивает только экспорт классов и функций.Что нужно сделать для экспорта глобальных переменных?Как в:

lib_source.cpp:
    int my_secret;

app.cpp:
    extern int my_secret;

1 Ответ

0 голосов
/ 07 февраля 2019

Для глобальных символов данных по-прежнему необходимо использовать __declspec(dllimport) при компиляции с кодом в .dll.

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

...