|
04.06.2009, 22:32
|
#1
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Как приделать к BlitzMax DLL
Хочу приделать Dll к BlitzMax судя по статье Blitz Et Cetera, где я черпал инфу по данному вопросу выяснилось что это делается вот так:
SuperStrict
Module тратата.тратата
Import brl.blitz
Const DLL:String= "НацНац.dll"
Extern "win32"
Function FindWindowA%(class%,title$z)
Function LoadLibraryA(lib$z)
Function GetProcAddress:Byte Ptr(lib%,fname$z)
End Extern
Global Привет(x%,y%) "win"
Global Пока (x%,y%) "win"
Global lib%=LoadLibraryA()
If lib% Then
Привет(x%,y%) =GetProcAddress(lib,"Preved")
Пока (x%,y%) =GetProcAddress(lib,"GoodPoka")
Else
RuntimeError("Не не не, Девид Блейн! " + DLL)
End
End If
Но не канает. :э(
Очевидно в ковычках в GetProcAddress(lib,"Preved") помимо названия фции должны быть
ещё и её параметры, но как их там указывать я пока не понял.
Ктонибуть может помочь?
А поможет?
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
04.06.2009, 22:46
|
#2
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Как приделать к BlitzMax DLL
Скорее так:
SuperStrict
Module тратата.тратата
Import brl.blitz
Const DLL:String= "НацНац.dll"
Extern "win32"
Function FindWindowA%(class%,title$z)
Function LoadLibraryA(lib$z)
Function GetProcAddress:Byte Ptr(lib%,fname$z)
End Extern
Global Привет(x%,y%) "win32"
Global Пока (x%,y%) "win32"
Global lib%=LoadLibraryA()
If lib% Then
Привет =GetProcAddress(lib,"Preved@8")
Пока =GetProcAddress(lib,"GoodPoka@8")
Else
RuntimeError("Не не не, Девид Блейн! " + DLL)
End
End If
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
04.06.2009, 23:00
|
#3
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: Как приделать к BlitzMax DLL
@8 - эт чё??
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
04.06.2009, 23:10
|
#4
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Как приделать к BlitzMax DLL
8 байт входных аругментов в функции (4+4 [2 int т.е.])
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
05.06.2009, 01:44
|
#5
|
|
Ответ: Как приделать к BlitzMax DLL
Если у DLLки имееться статическая библиотека, то задача упроститься.
|
|
|
05.06.2009, 11:11
|
#6
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Ответ: Как приделать к BlitzMax DLL
Сообщение от impersonalis
8 байт входных аругментов в функции (4+4 [2 int т.е.])
|
по-моему там не важно int это или byte, просто (4 * кол-во параметров)
скоро моё юбилейное сообщение, ждите
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
05.06.2009, 11:36
|
#7
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Как приделать к BlitzMax DLL
Ну да, в основном в win32 все входные параметры dll это 4х байтовые целые или дробные.
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
05.06.2009, 20:10
|
#8
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: Как приделать к BlitzMax DLL
Сообщение от Diablo1909
Если у DLLки имееться статическая библиотека, то задача упроститься.
|
Статитческая библиотека?
Эксперементы ставлю на AStar.dll
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
05.06.2009, 22:40
|
#9
|
|
Ответ: Как приделать к BlitzMax DLL
Сообщение от Randomize
Статитческая библиотека?
Эксперементы ставлю на AStar.dll
|
ага...они компиляться вместе с DLL. В этих файлах храняться интерфейсы к DLL. Что то типа "готового хидера". Многие разрабы кладут их вместе с СДК.
Поищи в папочках, может найдешь....либо мелкосовтовский AStar.lib либо gcc-шный AStar.a
В Блиц-максе просто импортируй его : Import AStar.lib, после этого тебе останеться только обьявить эти функции в БМаксе (Extern::EndExtern)
Насчет AStar.dll - это случайно не мой Астар для Блиц3Д ? Могу дать lib-файл.
|
|
|
07.06.2009, 05:53
|
#10
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: Как приделать к BlitzMax DLL
Именно! Та самая AStar.dll )
От lib не откажусь, заранее спасибо!
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
08.06.2009, 18:40
|
#11
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: Как приделать к BlitzMax DLL
Итог эксперементов:
Strict
Module Subject.AStar
Import Pub.Win32
Private
Local lib%
Public
lib = LoadLibraryA("AStar.dll")
Global AStar_INIT(xMap%,yMap%) = GetProcAddress(lib, "AStar_INIT")
Global EstimateHcost%(a%,b%,targetx%,targety%) = GetProcAddress(lib, "EstimateHcost")
Global FindPath%(pathfinderID%,mapWidth%,mapHeight%,startX%,startY%,targetX%,targetY%,stepBystep%) = GetProcAddress(lib, "FindPath")
Global ReadPathX%(pathfinderID%,pathLocation%) = GetProcAddress(lib, "ReadPathX")
Global ReadPathY%(pathfinderID%,pathLocation%) = GetProcAddress(lib, "ReadPathY")
Global ReadPath%(pathfinderID%) = GetProcAddress(lib, "ReadPath")
Global Get_walkability%(x%,y%) = GetProcAddress(lib, "Get_walkability")
Global Set_walkability(x%,y%,param%) = GetProcAddress(lib, "Set_walkability")
Global Get_listArray%(x%,y%) = GetProcAddress(lib, "Get_listArray")
Global Set_listArray(x%,y%,param%) = GetProcAddress(lib, "Set_listArray")
Global Get_parentX%(x%,y%) = GetProcAddress(lib, "Get_parentX")
Global Get_parentY%(x%,y%) = GetProcAddress(lib, "Get_parentY")
Global Get_Fcost%(x%,y%) = GetProcAddress(lib, "Get_Fcost")
Global Get_Gcost%(x%,y%) = GetProcAddress(lib, "Get_Gcost")
Global Get_Hcost%(x%,y%) = GetProcAddress(lib, "Get_Hcost")
Global CheckForIsland(x%,y%) = GetProcAddress(lib, "CheckForIsland")
lib = 0
Но вот Shimatta!!!!
Никак не хочет блиц его вкушивать.
Путь: BlitzMax\mod\subject.mod\AStar.mod\AStar.bmx
Тамже и DLL обитает...
MinGW есть.
Скомпилил.
Building test
Compiling:test.bmx
Compile Error: Can't find interface for module 'subject.astar'
[C:/Documents and Settings/Администратор/Рабочий стол/astar/test.bmx;1;1]
Build Error: failed to compile C:/Documents and Settings/Администратор/Рабочий стол/astar/test.bmx
Process complete
Wtf???
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
Последний раз редактировалось Randomize, 08.06.2009 в 19:13.
|
(Offline)
|
|
09.06.2009, 11:21
|
#12
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Ответ: Как приделать к BlitzMax DLL
БМ не может найти модуль. Ты его скомпилил вообще?
и где лежат сорцы, напиши полный путь к папке.
П.С. штука парни, это - 1000
|
(Offline)
|
|
09.06.2009, 19:56
|
#13
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: Как приделать к BlitzMax DLL
Ну я помоему всё что можно расписал...
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
10.06.2009, 12:01
|
#14
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Ответ: Как приделать к BlitzMax DLL
а скомпилил ты под дебаг и под релиз? может кинешь архив проекта.
|
(Offline)
|
|
14.06.2009, 00:15
|
#15
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: Как приделать к BlitzMax DLL
Сообщение от dimanche13
а скомпилил ты под дебаг и под релиз? может кинешь архив проекта.
|
Спасибо, но проблема уже решена.
Как ни странно но виной всему проклятые вирусы, после того как восстановил с образа винч всё стало работать как положено.
Зря я шум поднял, прошу прощения.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:37.
|