связывание ошибок после обновления .so - PullRequest
0 голосов
/ 07 января 2020

решено что решило мою проблему после запуска

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)

...