Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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
5-1122596203
Fedja2003
2005-07-29 04:16
2006.01.22
Редактор компонентов 2


1-1134651350
Sergey Ivanov
2005-12-15 15:55
2006.01.22
TImageList и MainMenu


2-1136460168
Vek
2006-01-05 14:22
2006.01.22
Как сделать чтобы открывался текстовый файл в блокноте


2-1136027458
GuAV
2005-12-31 14:10
2006.01.22
if Assigned(Self) then Result := FList else Result := EmptyList;


4-1131661860
sergey1
2005-11-11 01:31
2006.01.22
как можно создать на чистом Windows API без применения визуальны





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский