Page 5 of 20

Posted: Sat Sep 23, 2006 2:23 pm
by O01eg

Code: Select all

#define NULL ((void*)0)

Code: Select all

void ogg_demo(void)
{
   fogg=fopen(sz_open_file,"rb");
   if(fogg==NULL)
      return;
   fclose(fogg);
}
В эмуляторе этот кусок вылетает, хотя скомпилировалось нормально, похоже ошибку вызывает fopen.

Posted: Sat Sep 23, 2006 2:50 pm
by andrew_programmer
Для той версии fopen,которая в melibc.a надо аогументы передавать таk:

fogg=fopen(sz_open_file,'rb');

'rb' в апострофах ,а не в кавычках(хотя в правильном варианте надо в кавычках).

Posted: Sat Sep 23, 2006 3:07 pm
by halyavin
andrew_programmer
Почему это в апострофах? Нужно передавать в кавычках.
Проблема оказалась в другом - почему-то cc1.exe при компиляции преобразует имена внешних функций из malloc в _malloc@4. С подчеркиванием я бороться научился, а вот что делать с @4 - не понятно. Из-за этого программа не линкуется :(

Posted: Sat Sep 23, 2006 3:20 pm
by andrew_programmer
Я пробовал передавать и в кавычках и в опострафах.Если передавать в кавычках,то программа вырубается мгновенно.

Андрей,что-то не понял,что за cc1.exe ?
Где malloc преобразуется ?

Posted: Sat Sep 23, 2006 5:04 pm
by halyavin
Сделал кое-какие исправления. Новый melibc.a можно скачать по адресу http://shade.msu.ru/~msu-se/melibc.rar
Новый metcc.exe можно скачать по адресу http://shade.msu.ru/~msu-se/metcc.rar
Новый mesys.h можно скачать с svn сервера.

Posted: Sat Sep 23, 2006 5:05 pm
by halyavin
Программа мгновенно вырубалась из-за ошибки линковки.
сс1.exe - компилятор си (gcc), который используется при компиляции стандартной библиотеки.

Posted: Sat Sep 23, 2006 6:06 pm
by andrew_programmer
Можно этот mesys.h выложить прямо здесь(ввиде текста) ?

Возможно из-за отсутствия нового mesys.h комбинация

f=fopen(filename,"r");
close(f);

пока не работает.


P.S.
Мне ОЧЕНЬ нужно,чтобы в metcc можно было работать с файлами.Я пишу одну научную программу под Колибри,используя metcc и KlbinWin.

Posted: Sat Sep 23, 2006 6:17 pm
by diamond
А ещё желательно переписывание библиотеки на новую 70-ю функцию.

Posted: Sat Sep 23, 2006 6:51 pm
by Serge
andrew_programmer
Если не обязательно использовать ANSI fopen() fread() то возьми код, который я приводил выше, запиши в файл k_file.asm скомпилируй ФАСМом. Файл линкуется при компиляции программы metcc.exe my_prog.c melibc.a k_file.o -o my_prog
Если качал исходники ядра то в папке /ac97 переписанный на Си плеер и k_lib.asm с оболочками для системных вызовов.
make.bat - пример компиляции из нескольких файлов.

Posted: Sat Sep 23, 2006 7:22 pm
by andrew_programmer
Serge

Попробую поэкспериментировать.

Posted: Sun Sep 24, 2006 9:59 am
by O01eg
а где этот svn сервер?

Posted: Sun Sep 24, 2006 10:29 am
by halyavin
O01eg
svn://kolibrios.org
andrew_programmer
В mesys.h нужно удалить атрибут stdcall у процедур malloc, free, realloc.
Можешь все-таки выслать или выложить весь код - чтобы не устранять ошибки по одной.
Serge
Я нашел в компиляторе огромную проблему - раньше неправильно компилился код

Code: Select all

int x[10];
int main()
{
  x[0]=0;//на выходе будет присвоение нулевому адресу :(
  return 0;
}
Почему-то компилятор символам из BSS присваивает какой-то очень странный номер секции, из-за чего моя процедура линковки, не найдя такой секции, не применяла соотвествующий релокейшен. На данный момент я поставил, что если у символа очень странный номер секции, то он из BSS. Но с проблемой надо разбираться...

Posted: Sun Sep 24, 2006 10:48 am
by andrew_programmer
halyavin

Код работающий с файлом я уже выкладывал выше.А вызывается эта функция из main() так:

int main(......)
{

int length_spektr;

length_spektr=LoadSpektor("/hd/1/spc.dat");

}

Где spc.dat - текстовый файл со спектром.Как я говорил выше,в Линукс у меня LoadSpektr() нормально работает.

Вся остальная часть кода к файлам не имеет никакого отношения.

Posted: Sun Sep 24, 2006 10:55 am
by O01eg
И чем svn:// открывать? А нельзя ли выложить mesys.h где нибудь на HTTP или FTP?

Posted: Sun Sep 24, 2006 11:00 am
by Heavyiron
http://subversion.tigris.org/project_packages.html - версии svn-клиентов для разных ОС