Название: Ошибки линковки Отправлено: Igors от Август 10, 2018, 15:15 Добрый день
Линкер выдал такую бяку Код: Undefined symbols for architecture x86_64: Код: 000000000009a720 T __ZNK13QOpenGLWindow10redirectedEP6QPoint Спасибо Название: Re: Ошибки линковки Отправлено: zhbr от Август 13, 2018, 15:22 согласно https://demangler.com/
строки: Код: __ZThn36_NK13QOpenGLWindow10redirectedEP6QPoint Код: __ZThn40_NK13QOpenGLWindow10redirectedEP6QPoint Код: _non-virtual thunk to QOpenGLWindow::redirected(QPoint*) const пойдя https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling-special-thunks (https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling-special-thunks), находим: Код: use a "Th" prefix and encode the required adjustment offset, probably negative, indicated by a 'n' prefix, and the encoding of the target function. может какая-то нестыковка архитектур? а есть командная строка линкера? может там пути к либам не туда указывают? Название: Re: Ошибки линковки Отправлено: Igors от Август 14, 2018, 06:44 Спасибо за интересные линки. Проблему решил натравив на cpp файл "родной" компилятор (т.е. тот которым собирался Qt), так все бычит. Видимо др решения нет. Досадно, всегда думал что "все одним компилятором" - глупость только на бздошном Вындоуз :'(
Название: Re: Ошибки линковки Отправлено: zhbr от Август 14, 2018, 07:08 name mangling у разных компиляторов разный ага. именно поэтому библиотеки для C++ в бинарном виде распространяются под конкретный компилятор. c чистым C проще.
Название: Re: Ошибки линковки Отправлено: Igors от Август 14, 2018, 08:01 name mangling у разных компиляторов разный ага. именно поэтому библиотеки для C++ в бинарном виде распространяются под конкретный компилятор. c чистым C проще. Да, но тот же QOpenGLWindow имеет массу др используемых методов, их линкер почему-то нашел Название: Re: Ошибки линковки Отправлено: zhbr от Август 14, 2018, 08:17 остальные имена видимо случайно совпали :)
а что за компиляторы - "родной" и другой? знаю точно, что msvc разных версий по-разному коверкает имена. Название: Re: Ошибки линковки Отправлено: Авварон от Август 14, 2018, 15:48 Судя по тулзе nm он вооще на маке. Обожаю темы от Igors, ни ОС ни компилятор, ни версии оного, нихрена, а вы извольте ответить на вопрос.
Название: Re: Ошибки линковки Отправлено: Igors от Август 15, 2018, 06:44 остальные имена видимо случайно совпали :) Родной clang, текущий - icc. Ну с MSVC все однозначно, "только один", всякий раз приходится пересобирать кучу либа что за компиляторы - "родной" и другой? знаю точно, что msvc разных версий по-разному коверкает имена. Судя по тулзе nm он вооще на маке. Обожаю темы от Igors, ни ОС ни компилятор, ни версии оного, нихрена, а вы извольте ответить на вопрос. А что изменится если будет больше инфы/подробностей? Да ровным счетом ничего, суть та же.Т.е. выходит компилятор, увидев описание внешнего класса или ф-ций, сам придумывает "mangled" имена а потом ищет их в либе. Поэтому если имена не совпали - с приветом. Верно ли я понимаю ? Название: Re: Ошибки линковки Отправлено: Авварон от Август 15, 2018, 13:49 А что изменится если будет больше инфы/подробностей? Да ровным счетом ничего, суть та же. Вам сразу ответят, что не надо миксовать компиляторы и\или стандартную библиотеку. Программа, собранная шлангом не должна работать с либой, собранной гцц. Или либа, собранная с libc++ не должна работать с программой, собранной с stdlib. Я вам даже больше скажу, что либа, собранная с gcc4.7 не работает с либой собранной 4.8, ибо менялось ABI. А в исходной постановке задачи - сорян, телепаты в отпуске, откуда нам знать, что вы на маке собираете через icc. Я его вот в глаза не видел. Он же платный, да? Название: Re: Ошибки линковки Отправлено: Igors от Август 16, 2018, 07:43 ..откуда нам знать, что вы на маке собираете через icc. Я его вот в глаза не видел. Он же платный, да? Да. Но причем тут "видел не видел" - интересно как вообще действовать в такой ситуации, установить причину, сделать выводы. А перетыкивать компиляторы/сборки - такое решение никуда не убежит, да и годится не всегда. |