У меня есть общая библиотека, которая использует CMake в качестве системы сборки. Он прекрасно компилируется на машинах Linux с GCC. Сейчас я пытаюсь скомпилировать на Windows. MSVC не будет экспортировать символы, пока не будет указано. Я знаю о __declspec(dllexport)
. Но пример, представленный в вики CMake, сбивает с толку. Пожалуйста, рассмотрите следующий код.
#if defined (_WIN32)
#if defined(MyLibrary_EXPORTS)
#define MYLIB_EXPORT __declspec(dllexport)
#else
#define MYLIB_EXPORT __declspec(dllimport)
#endif /* MyLibrary_EXPORTS */
#else /* defined (_WIN32) */
#define MYLIB_EXPORT
#endif
Я понимаю __declspec(dllexport)
, но интересно, почему __declspec(dllimport)
используется? И как мне это использовать? Это как MYLIB_EXPORT void function()
?
Предположим, у меня есть функция C с именем foo()
. Это внутренне использует несколько static
функций. При экспорте мне тоже нужно экспортировать статические функции? Или достаточно экспортировать только те функции ввода, которые являются частью API?
Любая помощь будет оценена.