Главная страница
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.036 c
14-1135923791
ANB
2005-12-30 09:23
2006.01.22
Поздравляю себя с Днем Рождения (30 декабря)


2-1136187898
Khim
2006-01-02 10:44
2006.01.22
Как можно вставить свою иконку в MessageBox, подробнее


2-1135677661
Ice
2005-12-27 13:01
2006.01.22
Как "отцепить" мышь от контрола ?


2-1135828441
beglec
2005-12-29 06:54
2006.01.22
Как написать службу


1-1135057258
Separator
2005-12-20 08:40
2006.01.22
Поиск чеков на определенную сумму