![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
NordWest |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 86 Регистрация: 26.11.2008 Пользователь №: 433 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
Пишем программу в Qt. Начинали под винду, теперь есть непреодолимое желание использовать её ещё и под Линуксом, там более кросплатформ и всё такое... Но программа сопротивляется.
Вылетает она из библиотеки, которая позволяет работать со специальными графическими файлами. При открытии такого файла, т.е. при вызове метода fits_open_file() из этой библиотеки, программа вылетает, и если в релизе она это делает молча, то в дебуг-варианте в консоль выдается следующее: CODE Scope for 7037: Symbol fptr is a variable with multiple locations, length 4. Symbol imgtype is a variable with multiple locations, length 4. Symbol status is a variable with multiple locations, length 4. Symbol tstatus is a variable with multiple locations, length 4. Symbol lngscale is a variable with multiple locations, length 4. Symbol bscale is a variable with multiple locations, length 8. Symbol bzero is a variable with multiple locations, length 8. Symbol min_val is a variable in register st3, length 8. Symbol max_val is a variable in register st1, length 8. (gdb) Program terminated with signal SIGSEGV, Segmentation fault. The program no longer exists. (gdb) Это как же понимать? Области переменных смешались? |
|
|
![]() |
ЙаМайскЫйПчОЛ |
![]()
Сообщение
#2
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 154 Регистрация: 10.7.2008 Из: СПб Пользователь №: 232 Спасибо сказали: 7 раз(а) Репутация: ![]() ![]() ![]() |
НУ ладно давай разбераться по пункта.
Я на 87% уверен что проблемма в первом аргументе либо в его типе либо в объявлении функции Эта уверенность инстинктивная + основное что мне приходилось править при переводе приложения на линь - это ссылки и указатели. В Твоем случае я вижу что мы имеем дело с FITS немного погуглив
обрати внимание на первую строчку кода и вызов ffmahd ИМХО такое объявление отличается от твоего на одну * контрол-ц контрол-в из MSDN и готовых сырцов часто приводит к непониманию сделай ТАК!
в объявлении функции и будет тебу счастие а примеров подобного рода куча http://astro.phys.au.dk/ai43/toar/io/MOMF/...itsio/putcoll.c Сообщение отредактировал ЙаМайскЫйПчОЛ - 22.4.2009, 8:21 |
|
|
NordWest |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 86 Регистрация: 26.11.2008 Пользователь №: 433 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
НУ ладно давай разбераться по пункта. ... сделай ТАК!
в объявлении функции и будет тебу счастие ... Ну вот, программа заработала. При этом не понятно что случилось и что собственно помогло... В общем, я попытался воспользоваться советом уважаемого майского насекомого. убрать звездочку из ffopen явно мало. Потому как сама fits_open_file связана define'ом с функцией ffopentest в файле longname.h:
Т.е. этот двойной указатель передается ей, а уже она вызывает ffopen(): Раскрывающийся текст
Получается чтобы поменять заголовок как в совете, нужно не только изменить сам ffopen, но и ffopentest и ещё все процедуры, которые вызывают данные функции с двойным указателем. Это мне и выдал make, когда я заменил вызов у себя и пересобирал библиотеку. Поэтому я возвернул всё назад. Пересобрал библиотеку и свой проект и о чудо!.. Помимо этих действий, я также скачал новую версию библиотеки, переустановил её в /usr/local а не /usr/local/bin как ранее и забросил в папку, откуда подключаю fitsio.h и longname.h ещё и drvsmem.h и fitsio2.h, которые также создаются при сборке и на которые я раньше внимания вообще не обращал. Т.е. возможно была какая-то путаница версий, либо я криво установил библиотеку... Либо ещё что. Главное теперь всё работает и более того - по сравнению с виндой приложение теперь летает ![]() В любом случае, всем спасибо за помощь и участие! И приношу свои извинения за нецелевое использование консультационных ресурсов форума. Сообщение отредактировал NordWest - 22.4.2009, 13:16 |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 27.2.2025, 1:20 |