Page 5 of 20
Posted: Sat Sep 23, 2006 2:23 pm
by O01eg
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