Как экспортировать `переменную статического члена класса` в библиотеку Windows .dll с помощью CMake

Я строю библиотеку C ++ для Windows, Linux / Unix на основе CMake. Я создаю общую библиотеку (.dll) в Windows и хочу использовать статическую библиотеку (.a) в Linux / Unix.

На винде я знаю как это сделать __declspec(dllexport/dllimport) для каждой функции и класса я хочу экспортировать. Тогда я недавно увидел эти статьи. ( https://blog.kitware.com/create-dlls-on-windows-without-declspec-using-new-cmake-export-all-feature/) Я пытался собрать CMakeLists.txt без __declspec() в функции библиотеки, как описано в статье.

include(GenerateExportHeader)
generate_export_header(mylibrary)

Согласно статье, чтобы экспортировать статические переменные-члены в классе, необходимо создать заголовок экспорта в соответствии с существующим методом и объявить переменные, как показано ниже.

#include <mylibary_export.h>

class MyClass
{
    static mylibrary_EXPORT int GlobalCounter;
    ...
}

Библиотека была скомпилирована успешно, но пытается ссылаться на это GlobalCount Переменная в последующем проекте приводит к ошибке LINK.

У вас есть идея по этому вопросу?

0 ответов

Другие вопросы по тегам