Использование библиотек и компонентов
В проектах C++ часто требуется вызывать функции или обращаться к данным в двоичных файлах, таких как статические библиотеки (LIB-файлы), библиотеки DLL, компоненты среды выполнения Windows, компоненты COM или сборки .NET. В этих случаях необходимо настроить проект таким образом, чтобы он мог находить нужные двоичные файлы во время сборки. Конкретный способ сделать это зависит от типа вашего проекта, типа двоичного файла, а также от того, был ли этот двоичный файл собран в том же решении, что и ваш проект.
Использование скачанных библиотек с помощью vcpkg
Если вы хотите использовать скачанную библиотеку с помощью диспетчера пакетов vcpkg, то приведенные ниже инструкции можно пропустить. Дополнительные сведения см. в vcpkg.io .
Использование статических библиотек
Если проект статической библиотеки был создан в том же решении:
- #include файл заголовка для статической библиотеки с помощью кавычки. В типовом решении путь начинается с ../ . При поиске вы можете использовать предложения технологии IntelliSense.
- Добавьте ссылку на проект статической библиотеки. Щелкните правой кнопкой мыши элемент Ссылки в узле проекта приложения в обозревателе решений и выберите Добавить ссылку.
Если статическая библиотека не входит в состав решения:
- Щелкните правой кнопкой мыши узел проекта приложения в обозревателе решений и выберите Свойства.
- На странице свойств Каталоги VC++ добавьте в раздел Пути библиотек путь к каталогу, который содержит LIB-файл. Затем добавьте в раздел Включаемые каталоги путь к файлам заголовков библиотеки.
- На странице свойств компоновщика > добавьте имя LIB-файла в дополнительные зависимости.
Библиотеки динамической компоновки
Если библиотека DLL была собрана в рамках того же решения, что и приложение, выполните те же действия, что и для статической библиотеки.
Если библиотека DLL не входит в состав решения приложения, вам потребуются DLL-файл, заголовки с прототипами для экспортируемых функций и классов, а также LIB-файл, содержащий необходимую для компоновки информацию.
- Скопируйте DLL-файл в папку выходных данных проекта или другую папку, которая задана в качестве стандартной для поиска библиотек DLL в Windows. Дополнительные сведения см. в разделе «Порядок поиска библиотеки динамических ссылок».
- Выполните шаги с 1 по 3 для статических библиотек, чтобы задать пути к заголовкам и LIB-файлу.
COM-объекты
Если в собственном приложении C++ требуется использовать COM-объект и этот объект зарегистрирован, вам достаточно вызвать функцию CoCreateInstance и передать в нее CLSID объекта. Система выполнит поиск объекта в реестре Windows и загрузит его. В проекте C++/CLI COM-объект можно использовать таким же образом. Кроме того, он может использовать его, добавив ссылку на нее из списка добавления ссылок > COM и используя ее через вызываемую оболочку среды выполнения.
Сборки .NET с компонентами среды выполнения Windows
В проектах универсальной платформы Windows (UWP) или C++/CLI для использования сборок .NET или компонентов среды выполнения Windows можно добавить ссылку на сборку или компонент. В узле Ссылки проекта универсальной платформы Windows (UWP) или C++/CLI представлены ссылки на часто используемые компоненты. Щелкните правой кнопкой мыши узел Ссылки в Обозревателе решений, чтобы открыть диспетчер ссылок и просмотреть доступные в системе компоненты. Нажмите кнопку Обзор, чтобы перейти к папке, в которой находится нужный вам пользовательский компонент. Поскольку сборки .NET и компоненты среды выполнения Windows содержат встроенные сведения о типах, для просмотра их методов и классов можно щелкнуть правой кнопкой мыши и выбрать команду Просмотреть в обозревателе объектов.
Свойства ссылки
Каждый тип ссылки имеет свойства. Свойства можно просмотреть, выбрав ссылку в обозревателе решений и нажав клавиши Alt + ВВОД. Также можно щелкнуть ссылку правой кнопкой мыши и выбрать пункт Свойства. Одни свойства доступны только для чтения, другие можно изменять. Тем не менее обычно эти свойства не требуется изменять вручную.
Свойства ссылки ActiveX
Свойства ссылки ActiveX доступны только для компонентов COM. Данные свойства отображаются только тогда, когда в панели Ссылки выбран компонент COM. Эти свойства нельзя изменить.
- Управление полным путем Отображает путь к каталогу элемента управления, на который указывает ссылка.
- GUID элемента управления Отображает GUID для элемента управления ActiveX.
- Версия элемента управления Отображает версию элемента управления ActiveX, на который указывает ссылка.
- Имя библиотеки типов Отображает имя библиотеки типов, на которую указывает ссылка.
- Средство программы-оболочки Отображает средство, которое используется для создания сборки взаимодействия из указанной библиотеки COM или элемента управления ActiveX.
Свойства ссылки на сборку (C++/CLI)
Свойства ссылки на сборку доступны только для ссылок на сборки .NET Framework в проектах C++/CLI. Данные свойства отображаются только тогда, когда в панели Ссылки выбрана сборка .NET Framework. Эти свойства нельзя изменить.
- Относительный путь Отображает относительный путь от каталога проекта к сборке, на которую указывает ссылка.
Свойства сборки
Следующие свойства доступны для различных типов ссылок. Они позволяют задавать способ построения со ссылками.
- Копировать локальные Указывает, следует ли автоматически копировать сборку, на которую указывает ссылка, в целевое расположение во время сборки.
- Копировать локальные вспомогательные сборки (C++/CLI) Указывает, следует ли автоматически копировать вспомогательные сборки ссылочной сборки в целевое расположение во время сборки. Используется, только если для параметра Копировать локальные задано значение true .
- Выходные данные ссылочной сборки Указывает, что эта сборка используется в процессе сборки. true означает, что эта сборка используется в командной строке компилятора во время выполнения сборки.
Свойства ссылок проектов на проекты
Следующие свойства определяют ссылку проекта на проект из проекта, выбранного в панели Ссылки, на другой проект в том же решении. Дополнительные сведения см. в статье Управление ссылками в проекте.
- Компоновать зависимости библиотек Если это свойство имеет значение True, система проектов установит в зависимом проекте связь с LIB-файлами, создаваемыми независимым проектом. Обычно устанавливается значение True.
- Идентификатор проекта Уникальный идентификатор независимого проекта. Значение свойства — это GUID внутренней системы, который невозможно изменить.
- Использовать входные данные зависимостей библиотек Если это свойство имеет значение False, система проектов не установит в зависимом проекте связь с OBJ-файлами для библиотеки, созданной независимым проектом. Таким образом, это значение отключает инкрементную компоновку. Обычно указывается значение False, так как при наличии множества независимых проектов сборка приложения может занять длительное время.
Ссылочные свойства только для чтения (COM & .NET)
Следующие свойства существуют в ссылках на компоненты COM и сборки .NET, и их нельзя изменить.
- Имя сборки Отображает имя сборки для сборки, на которую указывает ссылка.
- Язык и региональные параметры Отображает язык и региональные параметры выбранной ссылки.
- Description Отображает описание выбранной ссылки.
- Полный путь Отображает путь к каталогу сборки, на которую указывает ссылка.
- Identity Для сборок .NET Framework отображает полный путь. Для компонентов COM отображает GUID.
- Подпись Отображает метку ссылки.
- Название Отображает имя ссылки.
- Токен открытого ключа Отображает токен открытого ключа для идентификации сборки, на которую указывает ссылка.
- Строгое имяtrue , если сборка, на которую указывает ссылка, имеет строгое имя. Сборка со строгим именем имеет уникальную версию.
- Версия Отображает версию сборки, на которую указывает ссылка.
Настройка библиотеки MPI в CLion
Привет «параллельным программистам», мы продолжаем настраивать библиотеку MPICH везде, где это возможно и сегодня на операционном столе замечательная IDE CLion от JetBrains. До этого я уже рассказывал о том, как установить библиотеку MPI в систему Linux, и затронул тему настройки MPI в Eclipse.
Необходимо сразу подчеркнуть, что сейчас будет сказка, настройка в CLion несравнимо проще, чем в Eclipse. CLion сам по себе на голову выше многих IDE, поэтому если вы можете себе его позволить, то незамедлительно позволяйте. Сам я бедный студент ЧелГУ и пользуюсь лицензией для студентов, которая будет действовать до тех пор, пока числюсь в списках университета. Спасибо JetBrains за такую возможность!
Подключить библиотеку MPI в CLion
Проекты на C/C++ в CLion`е собираются с помощью автоматизированной кроссплатформенной системы сборки CMake. Суть в двух словах, мы пишем файл CMakeLists.txt в корне проекта, который содержит правила для сборки, на которые ориентируется Make, либо ее аналог в Windows. Более подробно о CMake на вики и статья на хабре .
Подключать библиотеку мы будем именно с помощью настроек CMake. Вот, как выглядит CMakeLists.txt вновь созданного проекта.

Нам нужно добавить библиотеку mpi.h , сделать это можно с помощью правила include_directories() . В качестве аргумента передаем полный путь до библиотеки(в Linux Ubuntu — /usr/include/mpi/ ). Не забываем нажать «Reload changes» справа в углу.

Готово, теперь CLion знает все функции MPI, но пока не умеет их собирать.
Настроить компилятор MPICC(MPIC++) в CLion
Настройка компилятора прописывается в CMakeLists.txt правилами set() . Напомню, что в Ubuntu компиляторы живут по адресу /usr/bin/mpicc для си, и /usr/bin/mpic++ для си++ соответственно. Поэтому добавляем два правила: set(CMAKE_C_COMPILER «/usr/bin/mpicc») и set(CMAKE_CXX_COMPILER «/usr/bin/mpic++») .

Важное замечание
Буквально только, после очередной переустановки системы, мной было замечено, что библиотека корректно подключилась только с настройкой
cmake_minimum_required(VERSION 3.6)
Заключение
Дело сделано, теперь можно писать программы на MPI в чудесной CLion. А вообще, CMake очень крутая функциональная штука, которую полезно знать. Возможно я посвящу ей отдельную запись со всеми подробностями. А на сегодня у меня все, спасибо за внимание!
CLion подключение библиотеки в CMake
Здравствуйте. Использую как IDE CLion. Мне нужно подключить библиотеку GLFW. Я скачал библиотеку, все что находилось в папке include в архиве библиотеки я поместил в папку include, которая лежит в папке mingw, тоже самое сделал с папкой lib. После этого в Clion стало возможно писать код с использованием библиотеки(то есть ошибок синтаксиса не вылетало). Однако при попытке скомпилировать такой код, выскакивает ошибка компиляции:
1 2 3 4 5 6 7 8 9 10 11 12 13
#include #include using namespace std; int main() { if( !glfwInit() ) { return -1; } return 0; }
1 2 3
CMakeFiles\OpenGL.dir/objects.a(main.cpp.obj): In function `main': main.cpp:7: undefined reference to `glfwInit' collect2.exe: error: ld returned 1 exit status
Загуглив, понял, что надо подключить еще и в файле CMakeLists.txt
Сделал следующее:
1 2 3 4 5 6 7 8 9 10
cmake_minimum_required(VERSION 3.6) project(OpenGL) set(CMAKE_CXX_FLAGS "$ -std=c++14") set(CMAKE_EXE_LINKER_FLAGS "$ -static") set(SOURCE_FILES main.cpp) add_executable(OpenGL ${SOURCE_FILES}) target_link_libraries(${PROJECT_NAME} -lglfw3 -lglfw3dll)
glfw3 и glfw3dll — это названия файлов .a, которые лежали в папке libs библиотеки и которые я переместил в папку libs, которая находится в папке mingw. Сами файлы называются libglfw3.a и libglfw3dll.a, но я прочитал, что нужно убрать слово lib и добавить -l.
Однако не работает и все равно выбивает ошибку. Что я делаю не так?
Добавлено через 20 часов 14 минут
UP.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Скачал Clion, установил MinGW, пытался настроить, но так и не смог. Clion говорит, что Cmake выдаёт ошибку
Скачал Clion, установил MinGW, пытался настроить, но так и не смог. Clion говорит, что Cmake выдаёт.
Не линкуется FreeGLUT в CMake (CLion)
Доброго времени суток. Никак не могу прилинковать FreeGLUT в CMake (который в CLion). FreeGLUT.
Как OpenSSL добавить в линковку CLion (используется cmake и mingw)
Приветствую, друзья. Как добавить OpenSSL в линковку проекта? Я видел FingOpenSSL (cmake), но.
CMake, CLion, PDCurses
Возникли проблемы с подключением файлов библиотеки PDCurses. CMake находит ее, подключает, но потом.
Clion + CUDA — как добавить пути к includes
И в том, и в другом случае дополнительный компилятор не видит «#include iostream».
Как и куда добавить необходимые пути?
ezus
20.02.22 11:46:01 MSK
- Ответить на это сообщение
- Ссылка
clion тянет пути из cmake. Там и настраивай.
ox55ff ★★★★★
( 20.02.22 12:13:17 MSK )
- Ответить на это сообщение
- Показать ответ
- Ссылка
Ответ на: комментарий от ox55ff 20.02.22 12:13:17 MSK
В cmake не путей для стандартных include типа iostream, но основной компилятор их откуда-то берет, а дополнительный их не видит. В чем разница?
ezus
( 20.02.22 12:20:54 MSK ) автор топика
- Ответить на это сообщение
- Показать ответ
- Ссылка
Ответ на: комментарий от ezus 20.02.22 12:20:54 MSK

CUDA компилятор? А без clion’а проект собирается? Если да, то надо в настройках clion’а ковыряться.
Dr64h ★
( 20.02.22 23:46:00 MSK )
- Ответить на это сообщение
- Показать ответ
- Ссылка
Ответ на: комментарий от Dr64h 20.02.22 23:46:00 MSK
Спасибо. К сожалению я работаю только через Clion. Меня удивило, что с основным компилятором проблем нет. Cmake не видит дополнительного компилятора. Все установки для основного компилятора где-то спрятаны, и я их не могу найти, чтобы взять настройки от туда.
ezus
( 21.02.22 11:09:12 MSK ) автор топика
- Ответить на это сообщение
- Ссылка
Может быть в одном проекте Clion нельзя смешивать *.cpp и *.cu?
ezus
( 21.02.22 11:18:42 MSK ) автор топика
- Ответить на это сообщение
- Показать ответ
- Ссылка
Ответ на: комментарий от ezus 21.02.22 11:18:42 MSK

Может быть в одном проекте Clion нельзя смешивать *.cpp и *.cu?
Ну это было бы странно, да и в доке у них cmake код есть с этими файлами
add_executable(target_name cpp_file.cpp cuda_file.cu)
Если есть лог сборки, то не плохо было бы на него посмотреть.
Путь к cuda компилятору определяется двумя способами:
1) Можно глобально в системе через «environment path». Добавляешь строку — «/usr/local/cuda-/bin» в переменную PATH, которая должна быть в «/etc/environment» файле. В таком случае, cuda будет доступна во всей системе без лишних танцев с бубном.
2) Прописать путь к компилятору в самом проекте через cmake переменную «CMAKE_CUDA_COMPILER». Можно через clion — в «Settings/Preferences | Build, Execution, Deployment | CMake», либо в текстовом файле «CMakeLists.txt».
Есть ещё более подробная дока от nvidia, но там долго разбираться надо.
Dr64h ★
( 21.02.22 12:43:25 MSK )
Последнее исправление: Dr64h 21.02.22 13:12:36 MSK (всего исправлений: 1)
- Ответить на это сообщение
- Ссылка