purebasic.info

PureBasic forum
Текущее время: Ср окт 18, 2017 7:40 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 85 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Чт май 19, 2011 12:16 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт окт 31, 2008 4:49 pm
Сообщений: 716
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Пункты репутации: 0
Я напрямую их объявляю в программе, результат тот же, если не объявляю.
Либа :
Код:
1
2
3
4
5
Structure Addon: Type.s: X.l: Y.l: EndStructure
   Global NewList TxtWindow.Addon()
ProcedureDLL CreateTxtWindow (X.l, Y.l)
   AddElement(TxtWindow()): TxtWindow()\x=x: TxtWindow()\y=y
 EndProcedure



Программа :
Код:
1
2
3
;Structure Addon: Type.s: X.l: Y.l: EndStructure
 ;  Global NewList TxtWindow.Addon()
CreateTxtWindow (10,20)



Я хочу запихать все переменные и структуры в либу и не париться с этим- подключил и пользуешься.

"Объявлять структуры в вызываемой процедуре"
у меня штук 40 процедур- объявлять при каждом обращении?

"Сделать отдельную процедуру аля InitMyLib(), и в ней проинициализировать все структуры."
Я их напрямую пробовал объявлять, без разницы.

_________________
мой форум http://spaceminers.mybb2.ru
Dungeon Raider (Ogre). Game video: http://www.youtube.com/watch?v=ZlhBgPJhAxI


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт май 19, 2011 12:43 pm 
Не в сети
профессор

Зарегистрирован: Вт янв 13, 2009 2:41 pm
Сообщений: 369
Благодарил (а): 3 раз.
Поблагодарили: 17 раз.
Пункты репутации: 8
В каком смысле напрямую? Код вне экспортируемых процедур не будет линковаться, в итоге память для структур выделена не будет.
Делай так:
Код:
1
2
3
4
5
6
ProcedureDLL InitMyProc()
  Structure Addon
    value.l
  EndStructure
  Global NewList TxtWindow.Addon()
EndProcedure


Если не забуду, вечером дам пример рабочего исходника и вызова библиотеки.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт май 19, 2011 12:57 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11033
Благодарил (а): 4 раз.
Поблагодарили: 373 раз.
Fox писал(а):
2. Сделать отдельную процедуру аля InitMyLib(), и в ней проинициализировать все структуры. Её нужно будет вызвать в начале программы, ну или хотя бы до первого вызова функций библиотеки.
Зачем изобретать колесо? Все уже украдено придумано до нас.
Код:
1
2
3
4
5
6
7
8
ProcedureDLL MyLib_Init()
  ; Тут делаем все необходимое для инициализации библиотеки.
  ; Например, объявляем глобальные переменные и структуры.
EndProcedure
 
ProcedureDLL MyLib_End()
  ; Тут делаем все необходимое для освобождения ресурсов при прекращении использования библиотеки.
EndProcedure


Это зарезервированные имена процедур, автоматически вызываемые при начале и завершении использования библиотеки.
MyLib нужно заменить на имя вашей библиотеки.
Нижние пробелы между именем библиотеки и Init и End обязательны.

AndyLy писал(а):
ТалБит делает либу, Пурик её видит, запускается, а потом вылетает с ошибкой:

Невозможен доступ к памяти. (ошибка чтения по адресу 40)

Сделай примеры которые вызывают ошибку (часть библиотеки) и выложи сюда. Без этого сложно сказать в чем проблема.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт май 19, 2011 1:17 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт окт 31, 2008 4:49 pm
Сообщений: 716
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Пункты репутации: 0
Цитата:
Сделай примеры которые вызывают ошибку

Я выложил раньше и либу и программу( упростил до некуда).

Цитата:
ProcedureDLL InitMyProc()
Structure Addon
value.l
EndStructure
Global NewList TxtWindow.Addon()
EndProcedure


Я так делал: ошибка не возникает но и переменных нет! Открываю просмотр переменных там нет моего списка.

_________________
мой форум http://spaceminers.mybb2.ru
Dungeon Raider (Ogre). Game video: http://www.youtube.com/watch?v=ZlhBgPJhAxI


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт май 19, 2011 1:30 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11033
Благодарил (а): 4 раз.
Поблагодарили: 373 раз.
AndyLy писал(а):
Я так делал: ошибка не возникает но и переменных нет! Открываю просмотр переменных там нет моего списка.
А их не не должно быть там.
Ведь когда используешь функции пурика или функции из DLL ну или друпию, то есть ли переменные из них в списке отладчика?

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт май 19, 2011 1:34 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт окт 31, 2008 4:49 pm
Сообщений: 716
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Пункты репутации: 0
Блин, до меня уже дошло, она свои переменные где-то выделяет. Все обращения к ним через процедуры либы. Я чего-то уперся, что они Глобал...

_________________
мой форум http://spaceminers.mybb2.ru
Dungeon Raider (Ogre). Game video: http://www.youtube.com/watch?v=ZlhBgPJhAxI


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт май 19, 2011 1:39 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11033
Благодарил (а): 4 раз.
Поблагодарили: 373 раз.
Библиотека уже скомпилированная, т. е. это уже не исходник пурика, а машинный код, поэтому по имени переменной, к ней уже не достучаться.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт май 19, 2011 3:46 pm 
Не в сети
профессор

Зарегистрирован: Вт янв 13, 2009 2:41 pm
Сообщений: 369
Благодарил (а): 3 раз.
Поблагодарили: 17 раз.
Пункты репутации: 8
Пётр, спасибо, про MyLib_Init() и MyLib_End() не знал.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср май 16, 2012 10:45 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11033
Благодарил (а): 4 раз.
Поблагодарили: 373 раз.
Как обычно бывает, искал одно, а нашел другое.
Попал на эту страницу. http://implib.sourceforge.net/ind_ru.htm
Там кроме всего прочего есть описание как делать либы для пурика из DLL.


Вложения:
ImpLib-1.8.rar [533.91 KiB]
Скачиваний: 171

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)
Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср май 16, 2012 12:49 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Хочешь сказать что из любой dll можно сделать пуриковскую либу?
Сомневаюсь я однака

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср май 16, 2012 2:47 pm 
Не в сети
профессор

Зарегистрирован: Вт янв 13, 2009 2:41 pm
Сообщений: 369
Благодарил (а): 3 раз.
Поблагодарили: 17 раз.
Пункты репутации: 8
Нет, только библиотеку импорта, дабы функции из dll были прописаны в импорте исполняемого файла.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн янв 21, 2013 11:05 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Скажите пожалуйста, прототипы можно объявлять в файле res? Или только в самой библиотеке

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн янв 21, 2013 1:45 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11033
Благодарил (а): 4 раз.
Поблагодарили: 373 раз.
Зачем они в res файле?

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн янв 21, 2013 2:33 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Ну не знаю, я просто спросил, возможно ли это

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт май 29, 2014 9:43 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс дек 09, 2012 9:02 pm
Сообщений: 763
Откуда: Дагестан
Благодарил (а): 0 раз.
Поблагодарили: 10 раз.
Пункты репутации: 0
Что это значить?
Вложение:
2014-05-29_222213.jpg [12.69 KiB]
Скачиваний: 0


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 85 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB