Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

Реализация движка в dll   Найти похожие ветки 

 
NewWonder ©   (2005-08-01 15:32) [0]

Вопрос к тем, кто писал движки в виде dll (DRON, помоги плиз!).
К примеру код dll такой:

library ...

uses
 OpenGL, Windows;

procedure DrawGreed(l: integer); export; stdcall;
var
 i, j: integer;
begin
 for i:=0 to l do
   for j:=0 to l do
   begin
     glBegin(gl_lines);
       glvertex3f(i/5, j/5, 0);
       glvertex3f((i+1)/5, j/5, 0);
       glvertex3f(i/5, j/5, 0);
       glvertex3f(i/5, (j+1)/5, 0);
     glEnd;
   end;
 glPushMatrix;
 glRotatef(90, 1, 0,0);
 for i:=0 to l do
   for j:=0 to l do
   begin
     glBegin(gl_lines);
       glvertex3f(i/5, j/5, 0);
       glvertex3f((i+1)/5, j/5, 0);
       glvertex3f(i/5, j/5, 0);
       glvertex3f(i/5, (j+1)/5, 0);
     glEnd;
   end;
 glPopMatrix;
 glPushMatrix;
 glRotatef(-90, 0, 1,0);
 for i:=0 to l do
   for j:=0 to l do
   begin
     glBegin(gl_lines);
       glvertex3f(i/5, j/5, 0);
       glvertex3f((i+1)/5, j/5, 0);
       glvertex3f(i/5, j/5, 0);
       glvertex3f(i/5, (j+1)/5, 0);
     glEnd;
   end;
 glPopMatrix;
end;

exports DrawGreed;

begin

end.


Тогда заголовок:

unit Dream3D;

interface

uses
 OpenGL;

procedure DrawGreed(l: integer);                                 stdcall; external "....DLL";

implementation

end.


Так вот, при вызове функции в приложении, написанном на API вылетает Access Violation. Всё ли я делаю правильно?


 
NewWonder ©   (2005-08-01 15:34) [1]

В чём может быть загвоздка? Такой же код в программе (не в DLL) работает нормально. Ла и Где здесь взяться ошибке?


 
Zer0 ©   (2005-08-01 18:33) [2]

ээ, а саму ддлю ручками загружать разве не надо?


 
cyborg ©   (2005-08-01 20:27) [3]

Не знаю чего там у тебя сделано.
У тебя совершенно другой процесс в длл.
Поэтому, если ты опенгл создаёшь в программе, а пытаешься в дллке вызывать glBegin(); и прочее, то естественно будут валить ошибки.

Попробуй комментировать участки кода в длл и понемногу раскомментируй, где начнёт вылезать ошибка, в том месте и ищи.


 
NewWonder ©   (2005-08-01 20:37) [4]

То есть инициализация окна должна быть в dll?


 
XProger ©   (2005-08-01 21:10) [5]

procedure DrawGreed(l: integer); stdcall;


 
cyborg ©   (2005-08-01 21:41) [6]


> [4] NewWonder ©   (01.08.05 20:37)

Не знаю как окно, а огл по идее да.


 
NewWonder ©   (2005-08-01 22:55) [7]


> XProger ©   (01.08.05 21:10) [5]

В заголовке я так и пишу...


 
XProger ©   (2005-08-01 23:06) [8]

Ты пишешь procedure DrawGreed(l: integer); export; stdcall;


 
NewWonder ©   (2005-08-01 23:19) [9]


> XProger ©   (01.08.05 23:06) [8]

Спасибо большое! Попробую переделать :)


 
XProger ©   (2005-08-02 00:13) [10]

NewWonder, да это наврятли поможет ;) Просто код будет корректнее.


 
Ищущий ©   (2005-08-02 12:13) [11]

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


 
NewWonder ©   (2005-08-02 13:32) [12]

Спасибо, попробую.


 
DR0N ©   (2005-08-03 21:45) [13]

http://dronprogs.mirgames.ru/files/DGLE_src.rar
исходники моего движка...


 
NewWonder ©   (2005-08-05 09:49) [14]

линк почему-то не работает :(


 
NewWonder ©   (2005-08-05 09:52) [15]


> DR0N ©   (03.08.05 21:45) [13]

Мне хотя бы небольшой кусочек кода, чтобы посмотреть, как это делается в принципе...


 
MeF Dei Corvi ©   (2005-08-05 12:33) [16]


> DR0N ©   (03.08.05 21:45) [13]

Решил убрать исходники из скачивания? ;)


 
DR0N ©   (2005-08-07 19:36) [17]

2NewWonder на мыло ща вышлю


 
NewWonder ©   (2005-08-08 21:24) [18]


> DR0N ©

Спасибо большое!



Страницы: 1 вся ветка

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.044 c
14-1135577682
Ega23
2005-12-26 09:14
2006.01.22
Всем привет!


14-1135920937
begin...end
2005-12-30 08:35
2006.01.22
С Днём рождения! 30 декабря


3-1132834861
MJShvedov
2005-11-24 15:21
2006.01.22
Как установить все значения в логическом столбце?


14-1135176699
syte_ser78
2005-12-21 17:51
2006.01.22
счетчик пробега мыши


14-1136071528
Yeg
2006-01-01 02:25
2006.01.22
Перезагрузка PocketPC (ASUS)