Непонятный "вылет" программы., а должна была быть кросплатформенной... |
Здравствуйте, гость ( Вход | Регистрация )
Непонятный "вылет" программы., а должна была быть кросплатформенной... |
ЙаМайскЫйПчОЛ |
22.4.2009, 0:09
Сообщение
#21
|
Участник Группа: Участник Сообщений: 154 Регистрация: 10.7.2008 Из: СПб Пользователь №: 232 Спасибо сказали: 7 раз(а) Репутация: 5 |
всёёёёё мне такой херней еща завтра заниматься........ Сообщение отредактировал ЙаМайскЫйПчОЛ - 22.4.2009, 0:11 |
|
|
NordWest |
22.4.2009, 0:43
Сообщение
#22
|
Студент Группа: Участник Сообщений: 86 Регистрация: 26.11.2008 Пользователь №: 433 Спасибо сказали: 1 раз(а) Репутация: 0 |
В смысле fits_open_file и ffopen???????????????77 Одно и то же:
fitsfile *fptr;//pointer ot FITSfile ты уверен что под него не надо память выделять??? В примерах не нужно было, и в винде думаю это также проявилось бы. В описалове ещё что-то говориться о "Shared memory files", но пока не разберусь к чему это они. fits_open_file(fptr, qPrintable(fitsFileName) , READONLY, &status); //bkb fits_open_file(fptr, fitsFileName.toAscii().data() , READONLY, &status); Оба варианта результата не дают. |
|
|
ЙаМайскЫйПчОЛ |
22.4.2009, 8:09
Сообщение
#23
|
Участник Группа: Участник Сообщений: 154 Регистрация: 10.7.2008 Из: СПб Пользователь №: 232 Спасибо сказали: 7 раз(а) Репутация: 5 |
НУ ладно давай разбераться по пункта.
Я на 87% уверен что проблемма в первом аргументе либо в его типе либо в объявлении функции Эта уверенность инстинктивная + основное что мне приходилось править при переводе приложения на линь - это ссылки и указатели. В Твоем случае я вижу что мы имеем дело с FITS немного погуглив
обрати внимание на первую строчку кода и вызов ffmahd ИМХО такое объявление отличается от твоего на одну * контрол-ц контрол-в из MSDN и готовых сырцов часто приводит к непониманию сделай ТАК!
в объявлении функции и будет тебу счастие а примеров подобного рода куча http://astro.phys.au.dk/ai43/toar/io/MOMF/...itsio/putcoll.c Сообщение отредактировал ЙаМайскЫйПчОЛ - 22.4.2009, 8:21 |
|
|
NordWest |
22.4.2009, 13:14
Сообщение
#24
|
Студент Группа: Участник Сообщений: 86 Регистрация: 26.11.2008 Пользователь №: 433 Спасибо сказали: 1 раз(а) Репутация: 0 |
НУ ладно давай разбераться по пункта. ... сделай ТАК!
в объявлении функции и будет тебу счастие ... Ну вот, программа заработала. При этом не понятно что случилось и что собственно помогло... В общем, я попытался воспользоваться советом уважаемого майского насекомого. убрать звездочку из 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 |
|
|
Текстовая версия | Сейчас: 29.11.2024, 0:42 |