Форум: "Игры";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
ВнизРеализация движка в 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.051 c