У меня есть определение библиотеки в CMake, который создает общую библиотеку из маленького набора файлов, и у меня есть он компилирующий очень хорошо и на Linux и на окнах.
Однако я также получил другую библиотеку, которая связывается против общей библиотеки, и она хорошо работает на Linux, однако, на окнах я получаю сообщение вдоль строк, или "ошибка не может найти Release/nnet.lib" во время разового ссылкой. Действительно ли там что-то является особенным, я должен сделать, чтобы заставить это связываться на окнах?
Редактирование, пример:
Основная общая библиотека (имена файлов, измененные для защиты невинного):
ADD_LIBRARY(nnet SHARED
src/nnet/file_1.cc src/nnet/file_3.cc
src/nnet/file_2.cc src/nnet/file_4.cc)
И затем я создаю модуль Python, который связывается в библиотеке:
# Build python module
ADD_LIBRARY (other_lib SHARED ${CMAKE_SOURCE_DIR}/src/boost/boost_main.cc)
TARGET_LINK_LIBRARIES (other_lib nnet ${PYTHON_LIBRARIES})
Остальное - просто шаблон (например: изменение расширения модуля .pyd на окнах, нахождение библиотек/заголовков Python, и т.д.) И затем при создании в VS 2008 я добираюсь:
фатальная ошибка LNK1181: не может открыть входной файл 'Release\nnet.lib'
при создании other_lib. Обратите внимание, что никакие ошибки не брошены при создании nnet.
Ах, моя проблема в том, что я забыл включить __declspec(dllexport) в подходящих местах при сборке библиотеки (можете ли вы сказать, что я не занимаюсь оконным программированием?)
.