|
23.09.2009, 07:43
|
#1
|
Разработчик
Регистрация: 19.05.2009
Адрес: Россия Иркутская область
Сообщений: 350
Написано 51 полезных сообщений (для 66 пользователей)
|
Xors3D для Delphi 7
Вот решил написать враппер движка Xors3D для Delphi 7, вроди немного написал, но когда я пытаюсь запустить его то вылезает ошибка вот ниже код:
program Sample;
uses
SysUtils,
xors3dsdk in 'Xors3DSDK.pas';
var cam, cube:integer;
begin
xGraphics3D(800,600,32,1,0);
cam:=xCreateCamera();
cube:=xCreateCube();
xMoveEntity(cam,0,0,-5);
xCreateLight();
xAmbientLight(0,0,0);
while xKeyHit(1)=0 do
begin
xTurnEntity(cube,1,1,1);
xRenderWorld;
xFlip;
end;
end.
Указывает на xFlip и вот что пишет
"Sample.exe faulted with message: "access violation at 0x00407e26: write of address 0x00130000" Process Stopped. Use Step or Run to continue"
Помогите решить эту проблему
|
(Offline)
|
|
23.09.2009, 17:47
|
#2
|
AnyKey`щик
Регистрация: 19.05.2009
Сообщений: 17
Написано 5 полезных сообщений (для 10 пользователей)
|
Ответ: Xors3D для Delphi 7
функцию вызываешь из dll каким методом cdecl или stdcall?
Попробуй так:
procedure xFlip();cdecl; external 'xors3d' name '_xFlip@0";
и еще имена функций в dll чувствительны к регистру.
|
(Offline)
|
|
23.09.2009, 18:01
|
#3
|
Разработчик
Регистрация: 19.05.2009
Адрес: Россия Иркутская область
Сообщений: 350
Написано 51 полезных сообщений (для 66 пользователей)
|
Ответ: Xors3D для Delphi 7
Неа не помогло ... Может надо еще подобие функций писать что находятся в Xors3D.bb ?
К примеру как эта:
Function xGraphics3D(width, height, depth = 16, mode = 0, vsync = 0)
hwnd = SystemProperty("AppHWND")
xSetWND(hwnd)
DLL_xGraphics3D(width, height, depth, mode, vsync)
End Function
Только я вот не знаю как ее написать
|
(Offline)
|
|
23.09.2009, 18:05
|
#4
|
Разработчик
Регистрация: 19.05.2009
Адрес: Россия Иркутская область
Сообщений: 350
Написано 51 полезных сообщений (для 66 пользователей)
|
Ответ: Xors3D для Delphi 7
Собственно вот как я пишу:
Ниже файл Xors3DSDK.pas
unit Xors3DSDK;
interface
procedure xGraphics3D(w:Integer;h:Integer;d:Integer=0;mode:Integer=0;v:Integer=0);cdecl; external 'Xors3D' name '_xGraphics3D@20';
implementation
end.
и вот так каждую команду!!! И как понять имена функций в dll чуствительны к регистру? может их как нибудь прежди временно регестрировать в Windows? Вобщем помогите кто чем может...
|
(Offline)
|
|
23.09.2009, 18:18
|
#5
|
Разработчик
Регистрация: 19.05.2009
Адрес: Россия Иркутская область
Сообщений: 350
Написано 51 полезных сообщений (для 66 пользователей)
|
Ответ: Xors3D для Delphi 7
Все всем спасибо проблемка решена Может в дальнейшем будут еще вопросы!!!Просто надо было вызывать функцию методом stdcall а не cdecl В особенности спасибо giraf за мысль
|
(Offline)
|
|
23.09.2009, 23:23
|
#6
|
AnyKey`щик
Регистрация: 19.05.2009
Сообщений: 17
Написано 5 полезных сообщений (для 10 пользователей)
|
Ответ: Xors3D для Delphi 7
Бывает когда метод stdcall работает, а бывает и cdecl, все зависит от длл
|
(Offline)
|
|
31.03.2010, 22:48
|
#7
|
Оператор ЭВМ
Регистрация: 13.01.2010
Сообщений: 35
Написано 3 полезных сообщений (для 4 пользователей)
|
Ответ: Xors3D для Delphi 7
Не стану мусорить созданием новой темы, поэтому напишу тут. Использую unit файл от товарища maxturbo, для написания программы в Delphi. Тестовый код:
xCreateLog (0,1,'xors_log.html');
xAppTitle('Test');
xGraphics3D (800,600,32,0,1);
xSetBuffer(xBackBuffer());
xInitDraw();
vr_SetColorScheme(1);
testImage:=xLoadImage('test.png');
repeat
xCls();
xDrawImage(testImage,0,0,0);
xFlip();
until xKeyHit(KEY_ESCAPE)<>0;
Однако при попытке запуска приложения возникает ошибка. Путем дебага выяснил что переменная testImage пуста, т.е. функция не вернула значение. Так же функция xCreateLog не создает файл лога и соответственно не могу посмотреть в чем дело. Замена stdcall на cdecl не помогла.
Чет нифига не понимаю. Заработало когда опять поменял stdcall на cdecl. Хотя 5 минут назад нифига не происходила. Жаль что вопрос не по теме, но теперь такая же проблема с FastImage.
|
(Offline)
|
|
31.03.2010, 23:02
|
#8
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Xors3D для Delphi 7
Насколько я помню, делфи юзает свой велосипед для строк. А двиг юзает стандартные const char *, т.е. тупо массив символов.
|
(Offline)
|
|
31.03.2010, 23:09
|
#9
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Xors3D для Delphi 7
xCreateLog (0,1,PChar('xors_log.html'));
xAppTitle(PChar('Test'));
xLoadImage(PChar('test.png'));
Попробуй.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
31.03.2010, 23:40
|
#10
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Xors3D для Delphi 7
А откуда взялась идея в первый аргумент xCreateLog засовывать ноль?
Там допустимые значения от 1 до 7.
__________________
|
(Offline)
|
|
01.04.2010, 00:08
|
#11
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Xors3D для Delphi 7
И к чему приводит этот ноль?
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 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)
|
|
01.04.2010, 02:12
|
#12
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Xors3D для Delphi 7
Ни к чему. Лог не создается, все свободны, всем спасибо.
__________________
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
|
|
01.04.2010, 11:09
|
#13
|
Оператор ЭВМ
Регистрация: 13.01.2010
Сообщений: 35
Написано 3 полезных сообщений (для 4 пользователей)
|
Ответ: Xors3D для Delphi 7
Большое спасибо. Немного посидев и подумав переделал файл заголовков. Нужно было передавать данные в библиотеку не ShortString, a PAnsiChar.
|
(Offline)
|
|
01.04.2010, 11:57
|
#14
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Xors3D для Delphi 7
Дак в Windows повсеместно PChar и PAnsiChar.
Это пишут в любом учебнике Delphi.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 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, время: 07:26.
|