1 / 1 / 0
Регистрация: 22.07.2024
Сообщений: 3
|
|||||||||||
Использование одного проекта другим внутри одного солюшена22.07.2024, 20:19. Показов 6851. Ответов 2
После долгих лет программирования на Java решил попробовать современный C++ и для этого установил последнюю версию Microsoft Visual Studio Community 2022 с MSVC.
В солюшене создал два проекта - cpp-db и cpp-db-test. Первый проект - это простая заготовка статической .lib библиотеки, которая пока ничего полезного не делает. А второй проект - это простенькое консольное приложение, которое печатает приветствие и вызывает конструктор класса из cpp-db библиотеки. Конструктор тоже лишь выводит приветствие. В начале возникла проблема, как познакомить первый проект со вторым. Это оказалось не столь простой задачей, как в Java + Maven. С этого места прошу комментировать мои действия и сообщать что я сделал не так или как было бы лучше сделать. Вначале, через правый клик, я пометил второй проект как "Set as Startup Project". После этого название/директория проекта в Solution Explorer стало выделяться жирным шрифтом. Это позволило его запускать через Ctrl+F5, пока ещё без обращения ко второму проекту. Затем я добавил директорию первого проекта в Additional Include Directories второго проекта как $(SolutionDir)cpp-db Это позволило использовать #include "database.h" в main.cpp проекта cpp-db-test. Но вызывать конструктор я ещё не мог, это приводило к ошибке
Если я меняю тип первого проета со статической .lib библиотеки на динамическую .dll библиотеку проект не собирается, с ошибкой:
Как сделать всё то же самое при помощи CMake? Или какой другой системой сборки, совместимой с MSVC, вы бы воспользовались? Будет ли такое решение (CMake или другое) работать не только в MSVC, а допустим ещё и в MINGW64 с GCC?
0
|
22.07.2024, 20:19 | |
Ответы с готовыми решениями:
2
Как сделать так, что при совпадении одного объекта с другим происходило удаление одного из них Можно ли из одного проекта управлять другим проектом? |
617 / 513 / 104
Регистрация: 05.08.2022
Сообщений: 2,775
|
|
23.07.2024, 07:41 | |
Для линковки проекта cpp-db-test нужна именно cpp-db.lib (это специальньная lib с экспротируемыми из dll функциями). И она явно создается, раз dll собирается. Надо найти где эта lib создается и проекту cpp-db-test прописать путь до этой lib в настройке VC++ Directories --> Library Directories
Однако, чтобы можно было вызывать функции/методы из DLL их надо экспротировать из DLL. Для просто функций экспорт понятно как делать (гуглить по "как экспортировать функции из DLL", я на память не помню все моменты) А вот как заэкспротировать из DLL методы класса, конструктор.... хм, чета не делал такого. Но явно можно нагуглить как это делать по фразе на предыдущей строке ![]()
0
|
Вездепух
![]() ![]() ![]() 12873 / 6737 / 1810
Регистрация: 18.10.2014
Сообщений: 17,057
|
|
23.07.2024, 08:33 | |
Никак, ибо это неправильно.
Нет, искаться должен именно .lib . Даже когда вы компилируете .dll , рядом с ней все равно должен создаваться маленький промежуточный .lib - библиотека импорта. И линковать вы будете все равно именно этот .lib .Если у вас проставлена Reference на проект библиотеки, все должно получаться само собой.
0
|
23.07.2024, 08:33 | ||||||
Помогаю со студенческими работами здесь
3
Доступ к свойствам объекта одного проекта из другого проекта одного решения Как копировать модуль и форму внутри одного проекта getServletContext().setAttribute использование внутри больше одного класса как сделать ссылку из страницы одного проекта на страницу другого проекта? Как вставить User Control из одного проекта в Frame главного проекта? Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Работа с объемным DOM в javascript
Htext 04.04.2025
Сегодня прочитал статью тут о расходах памяти в JS, ее утечках и т. п. И вот что вспомнил из своей недавней практики. Может, кому пригодится. Хотя, в той статье об этом тоже есть.
Дело в том, что я. . .
|
Оптимизация производительности Node.js с помощью кластеризации
run.dev 04.04.2025
Масштабирование приложений для обработки тысяч и миллионов запросов — обыденная задача для многих команд. Node. js, благодаря своей асинхронной событийно-ориентированной архитектуре, стал популярной. . .
|
Управление зависимостями в Python с Poetry
py-thonny 04.04.2025
Стандартный инструмент для установки пакетов в Python - pip - прекрасно справляется с базовыми сценариями: установил пакет командой pip install и используешь его. Но что произойдёт, когда разные. . .
|
Мониторинг с Prometheus в PHP
Jason-Webb 04.04.2025
Prometheus выделяется среди других систем мониторинга своим подходом к сбору и хранению метрик. В отличие от New Relic, который использует агентный подход и отправляет данные во внешнее хранилище,. . .
|
Пакет Context в Golang: Управление потоками и ресурсами
golander 04.04.2025
Работа с горутинами в Go часто напоминает управление непослушными детьми - они разбегаются кто куда, делают что хотят и не всегда завершаются вовремя. К счастью, в Go 1. 7 появился пакет context,. . .
|
Контейнеризация React приложений с Docker
Reangularity 03.04.2025
Контейнеризация позволяет упаковать приложение со всеми его зависимостями в автономный контейнер, который можно запустить на любой платформе с установленным Docker. Это существенно упрощает процессы. . .
|
Свой попап в SwiftUI
mobDevWorks 03.04.2025
SwiftUI, как декларативный фреймворк от Apple, предоставляет множество инструментов для создания пользовательских интерфейсов. В нашем распоряжении есть такие API как alerts, popovers, action sheets. . .
|
Антипаттерны микросервисной архитектуры
ArchitectMsa 03.04.2025
Хорошо спроектированная микросервисная система может выдержать испытание временем, оставаясь гибкой, масштабируемой и устойчивой к большинству проблем. Такая архитектура обладает высоким уровнем. . .
|
std::mutex в C++: Советы и примеры использования
bytestream 03.04.2025
std::mutex - это механизм взаимного исключения, который гарантирует, что критический участок кода выполняется только одним потоком в каждый момент времени. Это простое, но могущественное средство. . .
|
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
|