Форум программистов, компьютерный форум, киберфорум
Lua
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 24.12.2009
Сообщений: 4
1

Вторую неделю пытаюсь подружить Lua и BCB6, и наблюдаю их несовместимость

24.12.2009, 17:00. Показов 1693. Ответов 5
Метки lua (Все метки)

Author24 — интернет-сервис помощи студентам
Вторую неделю пытаюсь подружить Lua и BCB6, и наблюдаю их несовместимость. Простой пример:
Код
os.exit()
У меня на этом скрипте приложение падало с ошибкой чтения памяти. Дело в том, что lua5.1.dll использует майкрософтовскую сишную run-time библиотеку msvcr80.dll, а BCB6 - свою собственную (cc3260.dll). Одни и те же функции (в данном случае exit()) вызываются из разных библиотек, что, видимо, вызывает конфликт. Одно из решений - скомпилировать Lua при помощи BCB и прилинковать его к нашему проекту статически или динамически. Тогда и скрипты и приложение будут обращаться к одним и тем же run-time функциям и все будет работать корректно. Вышеупомянутый скрипт, например, просто завершит приложение.

Но это только частично решает проблему. Для Lua существует множество модулей, написанных на Си и поставляемых в виде DLL, например, с Lua for Windows. Все они используют msvcr80.dll и, таким образом, становятся для нас непригодными. А среди них есть и весьма полезные.

Вопрос. Можно ли как-нибудь избежать использования двух run-time библиотек одновременно при использовании сишных модулей?

Боюсь, что вопрос риторический...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2009, 17:00
Ответы с готовыми решениями:

Пытаюсь выполнить задачу уже вторую неделю
учитель дал задачу по делфи написать програму вот собственно содержание: мне хотябы мат. решение

С помощью компонента IBDataSet в BCB6 пытаюсь выполнить запрос...
С помощью компонента IBDataSet в BCB6 пытаюсь выполнить такой вот запрос: select ...

Пытаюсь использовать lua и haskell
Попытался я тут использовать lua для подсчёта сдвига точки. Вроде получилось, но вот какая...

которую неделю пытаюсь залить свой сайт на различные бесплатные хостинги,
Подскажите пожалуйста, которую неделю пытаюсь залить свой сайт на различные бесплатные хостинги,...

5
1856 / 713 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
24.12.2009, 21:04 2
Не знаю, у меня функция os.exit() работает как надо(приложение убивается).
Ради проверки, попробуй-ка мою программку для редактирования субтитров. Там менюшка "Скрипт"/"Скрипт". В диалоговом окне впиши os.exit() и нажми "запустить скрипт".
Вложения
Тип файла: rar subEditor.rar (580.1 Кб, 92 просмотров)
1
1856 / 713 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
24.12.2009, 21:50 3
Кстати, MqKnJt, а ты выполнил инициализацию библиотечных функций с помощью luaL_openlibs();?
0
1 / 1 / 0
Регистрация: 24.12.2009
Сообщений: 4
24.12.2009, 22:27  [ТС] 4
Otaka, да, действительно os.exit() работает как надо. Но если запустить скрипт, использующий внешние бинарные модули, слинкованные с msvcr80.dll, то твое приложение упадет. Я, конечно, понимаю, что твое приложение для этого не предназначено, но я, возможно, буду использовать библиотеки из Lua for Windows.

Если у тебя есть время/желание, могу по шагам расписать как воспроизвести этот глюк.
  1. Качаешь, ставишь Lua for Windows.
  2. Запускаешь свое приложение, открываешь "Скрипт"/"Скрипт"/"Файл"/"Открыть"
  3. Вбиваешь в поле "Имя файла", ну, например "C:\Program Files\Lua\5.1\examples\im\view.wlua" (при условии, что LfW у тебя установлен в C:\Program Files)
  4. Жмешь "Открыть". В окошко загрузится скрипт.
  5. В самом начале вставь: package.cpath = "C:\\Program Files\\Lua\\5.1\\clibs\\?51.dll" (чтобы он внешние либы нашел)
  6. Нажми "Запустить". Откроется диалог открытия файла. Покажи на какой-нибудь графический файл. Скрипт его откроет и отобразит картинку в новом окне.
  7. Теперь закрой окно с картинкой, закрой окно "Скрипт", закрой приложение.
  8. Должно появиться сообщение "обнаружена ошибка. Приложение будет закрыто." (Правда, оно у меня не каждый раз появлялось )

Эта ошибка вылетает в lua_close(); когда освобождается память.

Цитата Сообщение от Otaka Посмотреть сообщение
Кстати, MqKnJt, а ты выполнил инициализацию библиотечных функций с помощью luaL_openlibs();?
Конечно.
0
1856 / 713 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
24.12.2009, 23:06 5
Таки да, валится. Как-нибудь потом буду смотреть что ему можно сделать.
0
1 / 1 / 0
Регистрация: 24.12.2009
Сообщений: 4
25.12.2009, 11:28  [ТС] 6
Otaka, если нароешь что-нибудь, отпишись здесь, пожалуйста.

Я думаю, причина в том, что приложение и внешние модули используют разные RTL. На данный момент я вижу только одно решение - перекомпилировать Lua и все сишные библиотеки Борландом, чтобы все использовали одну борландовскую RTL. Но это геморрой. Я вчера списался с ребятами из Lua for Windows, спросил, как бы перекомпилить всё. Они говорят, не знаем, мы используем уже готовые бинарники от поставщиков. Они все используют msvcr80.dll. Но, с другой стороны, они говорят, что работают с LuaDist чтобы LfW можно было бы скомпилить любым компилятором в будущих версиях. Х.з. что у них получится и когда...
0
25.12.2009, 11:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2009, 11:28
Помогаю со студенческими работами здесь

Вторую неделю подряд рандомно вылетает синий экран
Помогите пожалуйста! Практически ничего в этом не понимаю... Вторую неделю подряд вылетает синий...

В массиве записан курс евро за 14 дней. Определить минимальное значение курса за первую неделю и максимальное за вторую
В массиве записан курс евро за 14 дней. Определить минимальное значение курса за первую неделю и...

Наблюдаю
Месяц назад сайт стоял на позициях крепко в топ 10... никаких работ не делалось с каждым апом то...

Lua наследование, lua ооп
Подскажите пожалуйста, как наследовать класс? Не получается выдаёт ошибку local car = {} --...

Иногда наблюдаю феномен
если кто знает, подскажите! время от времени наблюдаю такой феномен: в винде(2000) не запущена ни...

Наблюдаю разную выдачу по ф5
Собственно вот. Видимо крутят чтото, в теме ап заводить не стал, но факт "подкрутки" вижу.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru