#c #dll #cmake #linker-errors
#c #dll #cmake #компоновщик-ошибки
Вопрос:
Я пытался связать библиотеку с моим проектом cmake, но я получал ошибки компоновщика. Я потратил 2 часа, пытаясь решить проблему, и я создал простой проект, в котором я жестко запрограммировал все пути.
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
PROJECT(Testing CXX)
INCLUDE_DIRECTORIES("B:/Projects/TMH/Libraries/Awesomium/inc")
SET(SOURCE_FILES
src/Main.cpp
src/Application.cpp
src/Window.cpp
)
ADD_EXECUTABLE(Testing ${SOURCE_FILES})
TARGET_LINK_LIBRARIES(Testing B:/Projects/TMH/Libraries/Awesomium/bin/awesomium.dll)
Но даже этот код не компилируется и выдает ошибки компоновщика, подобные этой:
CMakeFilesTesting.dir/objects.a(Application.cpp.obj): In function `ZN9PXLClient11ApplicationD2Ev':
B:/Projects/TMH/Testing/src/Application.cpp:15: undefined reference to `_imp___ZN9Awesomium7WebCore8ShutdownEv'
CMakeFilesTesting.dir/objects.a(Application.cpp.obj): In function `ZN9PXLClient11Application3RunEv':
B:/Projects/TMH/Testing/src/Application.cpp:20: undefined reference to `_imp___ZN9Awesomium9WebConfigC1Ev'
Я либо пытался связать .файл библиотеки вместо .dll один. Я изменил
TARGET_LINK_LIBRARIES(Testing B:/Projects/TMH/Libraries/Awesomium/bin/awesomium.dll)
Для
TARGET_LINK_LIBRARIES(Testing B:/Projects/TMH/Libraries/Awesomium/lib/Awesomium.lib)
Но я получал точно такие же ошибки. Я на 100% уверен, что оба пути верны.
Как правильно привязать dll / lib к проекту cmake?
Комментарии:
1. Файл CMake в порядке. Именно библиотека не предоставляет эти символы для внешнего использования. Проверьте ресурсы, которые описывают, как создавать библиотеки , и следуйте им.
2. Я использовал . файл библиотеки в проекте Visual Studio, и он работает правильно. В Visual Studio все, что мне нужно было, это добавить библиотеку к дополнительным зависимостям в настройках компоновщика, но то же самое . файл библиотеки не работает с cmake.
3. Какой генератор (Visual Studio, MinGW, …) и компилятор вы используете с CMake? При компиляции кода C с помощью разных компиляторов могут возникнуть несовместимости.
4. Для проекта Visual Studio я использовал установку по умолчанию VS. Для проекта cmake я использую MinGW 3.21 с g 4.9.3. Файл библиотеки, который я пытаюсь использовать, взят из Awesomium SDK ( awesomium.com )
5. Итак, это выглядит как несовместимость между компилятором gcc, используемым для MinGW, и компилятором для VS. Попробуйте создать библиотеку с помощью gcc, и она должна быть успешно связана.