Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
undefined reference. Я что-то забыл написать? посмотрите свежим опытным глазом пожалуйста
|
|||
|---|---|---|---|
|
#18+
Всем привет. Пишу код... вроде всё как надо, а на функцию ругается... В кратце, есть 3 библиотеки (.so), структура не хитрая, одна из них - это основа для двух других (то есть туда вынесено всё, что может потребоваться в любой из двух других библиотек). Но при вызове одной из функций класса в библиотеке-потомке получаю ошибку "/usr/bin/ld: CMakeFiles/gameengine.dir/main.o: undefined reference to symbol '_ZN12modelsHolder11loadObjectsEP8GLObjectj'", но при этом не могу найти где ошибка. По коду, класс-предок, от которого наследуемся: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. из реализации интересует только функция loadObjects, так как именно при вызове её получаю данную ошибку, всё остальное работает как надо. Потому вот её реализация: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Класс потомок: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ну и конструктор тоже наследовал разумеется по всем правилам: Код: plaintext 1. 2. 3. А теперь самое интересное, код, приводящий к этой ошибке (итак, тут думаю всё понятно, есть общая библиотека, библиотека в которой используется эта общая и сама программа, к которой подключена вторая библиотека): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Может вы видите причину ошибки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2013, 10:27 |
|
||
|
undefined reference. Я что-то забыл написать? посмотрите свежим опытным глазом пожалуйста
|
|||
|---|---|---|---|
|
#18+
Ухты... поправил CMakeLists.txt, добавив туда find_library(common3d libcommon3d.so /home/programer/projects/common3D/build/) target_link_libraries(gameengine ${common3d}) и ошибка пропала... То есть библиотека common3d просто не была прилинкована. Но вот вопрос, почему...? Ведь она прилинкована к draw3d, а та прилинкована к gameengine. Или я чего-то не понимаю в процедуре линковки? То есть, если я наследую класс от другого находящегося в другой библиотеке, то мне надо линковать не только файл с основным классом, но и с классом-предком? А по какому принципу тогда работает та же библиотека glut например? Ведь подключая её, я сразу получаю в рапоряжение и все функции находящиеся в библиотеке libGL (и не только). То есть как сделать так, что бы в основном приложении не надо было бы линковать все вспомагательные библиотеки, методы из которых не вызываются напрямую из основного приложения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2013, 10:42 |
|
||
|
undefined reference. Я что-то забыл написать? посмотрите свежим опытным глазом пожалуйста
|
|||
|---|---|---|---|
|
#18+
Програмёр, если ты ищешь draw3d так же как common3d через find_library, то find_library не ресолвит зависимости. Хочешь, напиши свой скрипт на CMake, который ищет не только саму библиотеку, но и зависимости. Вообщем, дерзай, а не задавай абстрактных вопросов "как мне сделать, чтобы ничего не делать" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2013, 11:08 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=68&tid=2019807]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 38ms |
| total: | 177ms |

| 0 / 0 |
