FreeBasic
Главная
Вход
Регистрация
Пятница, 19.04.2024, 22:19Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Библиотеки для FreeBasic » Другие библиотеки » библиотека irrKlang-1.4.0- (библиотека для работы со звуком)
библиотека irrKlang-1.4.0-
electrikДата: Среда, 02.04.2014, 10:33 | Сообщение # 1
Полковник
Группа: Друзья
Сообщений: 180
Репутация: 3
Статус: Offline
во FreeBasic 0.90, появились абстрактные и виртуальные методы. я решил адаптировать полностью классы irrKlang на FreeBasic.
всё получилось, но не работает. вродь абстрактные методы, должны быть везде одинаковые. посути, абстрактные методы -  это таблица указателей на них(vtable, но  оно не работает.
при адаптации столкнулся с несовместимостью пространств имён, Fb генерит чуток другую инструкцию. обошёл просто, через GetProcAddress, достучался до нужной функции, в dll, а она возвращает указатель на таблицу указателей на абстрактные методы.
функция из dll, отрабатывается, а вот дальше... как только пытаюсь вызвать метод, прога падает. мне, ввиду сложности заюзать дебаггер, мож кто разберётся, вот ссылка на боекомплект:
ftp://el-zone.spb.ru/freebas....bove.7z
 
haavДата: Среда, 02.04.2014, 13:33 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Сергей! Хорошее дело, но я советую чуть повременить с этим до выхода компиля 0.91. Разработчики слишком много там исправили и переделали для OOП. Может так статься , что твои адаптированные классы не будут работать на новой версии.  А после выхода, кто знает может и не придется мучаться с пространством имен, как это проделал ты. Но на исходник, который ты выложил я посмотрю, как только голова будет свежая и никто мешать из домашних не будет. Хотя не факт, что я разберусь в этом, реально я еще очень далек от понимания всех этих ООП примочек.

Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
haavДата: Среда, 02.04.2014, 14:55 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Я так по быстрому посмотрел. Но ничего не понял. В отладчике можно выявить проблему только если понимаешь как должна функционировать сама библиотека, а так ну дошло все дело до вызова функции play2D , подсунулся там какой то адрес, что это за адрес? Куда по делу должен быть переход?  Еще как-то можно понять, если есть аналогичный работающий код хотя бы  на СИ. Там можно хоть глянуть внутренности самой функции и на основе этого уже разбирать почему у FB кода происходит крах. Валится в модуле irrKlang.dll.
Вообще по хорошему, если идет адаптация кода с любого языка, нужно хотя на время адаптации сохранять и закомментированные аналоги прототипов этого языка рядом, по типу:

Код
'int f();
declare function f() as integer


А так найти ошибку очень сложно.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
electrikДата: Суббота, 05.04.2014, 00:28 | Сообщение # 4
Полковник
Группа: Друзья
Сообщений: 180
Репутация: 3
Статус: Offline
да я тоже далёк от ооп, просто читаю строку, и понимаю как её перевести на fbc. если встречается незнакомый момент, функция или синтаксический изворот, шаблоны, читаю доку и пытаюсь разбирать.  в данном случае, шаблоны были только для 3d, там написаны функции один раз, а компилятор потом по шаблону, подставляет нужные типы, int или float и делает столько копий функций(перегрузок) сколько надо. шаблоны c++ избавляют от написания огромной кучи overload функций. думаю, в fb тоже потом придумают, только вот синтаксис в c++ чуток у шаблонов долбанутый, но это дело привычки. думаю, fb ожидает учесть, если задумают, с c++ стянут. уже есть намёки, можно ведь интегер сделать как байт - пишется это вроде: dim  A as integer<8>

новую версию fb тоже жду. вродь  x64 версия будет.
 
Форум » Библиотеки для FreeBasic » Другие библиотеки » библиотека irrKlang-1.4.0- (библиотека для работы со звуком)
  • Страница 1 из 1
  • 1
Поиск: