решено что решило мою проблему после запуска
sudo make install
Я снова собираю библиотеку, и она решает проблему линковки
У меня есть проблема, которую я пытаюсь решить долгое время. У меня есть библиотека, которую я написал с помощью clion, и я создаю .so файлы, используя этот ответ , и я связываю ее с моим проектом, до сегодняшнего дня она работает нормально, но после того, как я отредактировал библиотеку и перестроил ее с помощью
cmake.
sudo make install
выход cmake. Команда:
- Идентификатор компилятора C - GNU 4.8.5 - Идентификатор компилятора CXX - GNU 4.8.5 - Проверка работоспособности компилятора C: / usr / bin / cc - проверка работоспособности C компилятора: / usr / bin / cc - работает - обнаружение C информации ABI компилятора - обнаружение C информации ABI компилятора - выполнено - обнаружение C компиляции Особенности - Обнаружение C Компиляция функций - Готово - Проверка работоспособности компилятора CXX: / usr / bin / c ++ - Проверка работоспособности компилятора CXX: / usr / bin / c ++ - Работает - Определение информации ABI компилятора CXX - - Определение информации ABI для компилятора CXX - выполнено - Определение возможностей компиляции CXX - Определение возможностей компиляции CXX - выполнено - Настройка выполнена - Генерация выполнена - Файлы сборки были записаны в: / home / yaodav / Desktop / git_repo / lib / internal / InventoryManager
и вывод команды sudo:
- Установка конфигурации: "" - Установка: /usr/local/lib64/libInventoryManager.so. 1.0.1 - Установка: / usr / local / lib64 / libInventor yManager.so.1 - Установка: /usr/local/lib64/libInventoryManager.so - Установка: /usr/local/include/InventoryItem.hpp - Установка: /usr/local/share/pkgconfig/InventoryManager.pc
, но когда я пытаюсь собрать свою программу, сборка не удалась:
CMakeFiles / test.dir / main. cpp .o: In function void
__gnu_cxx::new_allocator<InventoryManager>::construct<InventoryManager, std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >&>(InventoryManager*,
std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >&)':
/usr/local/include/c++/7.4.0/ext/new_allocator.h:136: undefined
reference to
InventoryManager :: InventoryManager (std :: __cxx11 :: basic_string, std :: allocator> const &) '
это конструктор:
InventoryManager::InventoryManager(const std::string &symbol):m_Symbol(symbol),m_itemFactory(*(new InventoryItemFactory(symbol)))
{
m_InventoryQty = 0;
m_InventoryItemValue = 0;
m_TotalInventoryValue = 0;
m_CurrentInventoryValue = 0;
}
это соответствующие (я думаю) строки из файла проекта cmake
include_directories (../ lib / internal / InventoryManager / include)
link_directories (../ lib / internal / InventoryManager )
add_executable (тест $ {SOURCE_FILES}) *
target_link_libraries (тест InventoryManager)