Рейтинг:
10
Member 13740197
Спасибо за ответ.
Ссылка, которую вы отправили, дает объяснение о создании библиотеки с использованием файлов .c. Но в моем случае весь проект qt(который состоит из классов и функций по умолчанию, из-за этого я не мог конвертировать в файлы .cpp) должен быть преобразован в библиотеку.
Richard MacCutchan
Не имеет значения, на каком языке находится исходный код в C или C++, библиотека общих объектов создается из результирующих объектов. Я бы посоветовал вам прочитать справочные страницы для ld(1): GNU linker - Man-страница Linux[^].
Member 13740197
Я пробовал с объектными файлами, как показано ниже
ССЗ -общая -о библиотеке libc.так camcapture.захват-победа о'.о нажатии Ctrl-вкладка.о конструкторе.общие-вкладка вывода.о glMsgDialog.о формате JSON.о главном.о qrc_rsc.о qv4l2.о v4l2-АПИ.о
Но я получаю ниже ошибки
/usr/bin/ld: camcapture.o: перемещения в generic ELF (EM: 40)
/usr/bin/ld: camcapture.o: перемещения в generic ELF (EM: 40)
/usr/bin/ld: camcapture.o: перемещения в generic ELF (EM: 40)
/usr/bin/ld: camcapture.o: перемещения в generic ELF (EM: 40)
/usr/bin/ld: camcapture.o: перемещения в generic ELF (EM: 40)
/usr/bin/ld: camcapture.o: перемещения в generic ELF (EM: 40)
/usr/bin/ld: camcapture.o: перемещения в generic ELF (EM: 40)
/usr/bin/ld: camcapture.o: перемещения в generic ELF (EM: 40)
camcapture.o: ошибка добавления символов: файл в неправильном формате
collect2: ошибка: ld вернул 1 статус выхода
Что это за ошибка и нужно ли мне что-то делать с командными и объектными файлами ld.
Richard MacCutchan
Как и было сказано, объектный файл имеет неправильный формат.
Member 13740197
На самом деле объектные файлы, которые я взял из папки проекта qt после сборки.
Richard MacCutchan
Ну, они все еще находятся в неправильном формате.
Member 13740197
Привет
У меня есть решение для этого. Я создал библиотечный проект с qt, используя новую библиотеку project->OtherProject->C++. После сборки проекта в папке проекта создаются четыре общие библиотеки, такие как abc.s0, abc.so.1, abc.so.1.0 и abc.so.1.0.0.
Я использовал эти библиотеки в другом проекте, который успешно запущен. После запуска этого exe в target я получил ошибку ниже
./mycam: ошибка при загрузке общих библиотек: abc.so.1: не удается открыть общий объектный файл: нет такого файла или каталога
Что это за ошибка и как ее устранить, не могли бы вы мне помочь?
Richard MacCutchan
Послание совершенно ясное. Вы пытаетесь сослаться на файл, который загрузчик не может найти. Вам нужно добавить путь к этим файлам в системный путь поиска библиотек или скопировать их все в то же место, что и исполняемая программа.
Member 13740197
Спасибо за ответ, теперь я могу запустить свое приложение. Но у меня есть еще одна проблема. Моя библиотека содержит графический интерфейс, который использует файл ресурсов для изображений.
И я также добавил этот файл ресурсов в свое приложение, но когда я запускаю свое приложение, эти изображения не отображаются. Так как же сделать это возможным для отображения, не могли бы вы, пожалуйста, помочь.
Richard MacCutchan
Извините, нет, потому что я понятия не имею, как работает ваш код. Пожалуйста, отредактируйте свой вопрос и предоставьте некоторые надлежащие детали.
Member 13740197
Ниже приведена некоторая часть кода, которая используется в библиотеке.
m_capStartAct = new QAction(QIcon(":/images/record.png"), "&Start Capture", this);
QAction *quitAct = новый QAction(QIcon(":/картинки/выход.ПНГ"), "&амп;бросить курить", это);
QToolBar *панель инструментов = addToolBar("");
панель инструментов->setObjectName("панель инструментов");
панель инструментов->addAction(m_capStartAct);
панель инструментов->addAction(quitAct);
Здесь образы записывать.формат PNG &ампер; выход.ПНГ присутствуют в файле ресурсов РКК.разводка.
Но когда я использую эту библиотеку в другом приложении, изображения не отображаются(означает пустую кнопку), и функция работает нормально. Я добавил Эти изображения в свое приложение в качестве файла ресурсов, но все равно изображения не отображаются. Можете вы пожалуйста помочь мне.
Richard MacCutchan
Это код QT, и, к сожалению, я его вообще не использовал. Я могу только предположить, что пути ресурсов не являются правильными для каждого приложения.