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

Вниз

Мучался всю ночь: проблема с dll   Найти похожие ветки 

 
NewWonder ©   (2005-07-11 15:10) [0]

Уважаемые мастера! Помогите решить такую проблему. Есть dll:

library Dream3D;

uses
 OpenGL, Windows;

{$R Dream3D.res}

procedure DrawGreed(l: integer); 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 "Dream3D.DLL";

implementation

end.

Всё прекрасно работает в VCL-приложении, а вот при работе с API-приложением вылетает или EAccessViolation или прога совсем вылетает. В чём дело? Я ума не приложу откуда такое  =(

Пишу в uses Dream3D,
Вызываю в соответствующем месте процедуру, вроде всё делаю правильно...

Простая процедура, вызываемая таким же образом из dll вида:
procedure Test(i: integer); stdcall;
begin
 i:=i+1;
end;

Работает нормально. Почему глюки только в API-приложении и с чем оно связано?
Помогите плиз!


 
Ega23 ©   (2005-07-11 15:13) [1]

А что эта процедура делает???


 
NewWonder ©   (2005-07-11 15:15) [2]

Процедура рисует 3D-сетку, используя OpenGL.
Можно в кладовке посмотреть программу с этой процедурой в разделе для студентов. Там всё работает, но код этот не в dll и там VCL-приложение.


 
BiN ©   (2005-07-11 15:18) [3]

а что в OpenGL.pas в секции инициализации?

И вообще-то, отладчик как раз и существует для выявления неадекватного поведения программы.


 
NewWonder ©   (2005-07-11 15:21) [4]

Та же dll нормально работает в VCL-приложении.


 
Ega23 ©   (2005-07-11 15:27) [5]

Та же dll нормально работает в VCL-приложении.

Подцепи её не в VCL-приложении (host application)


 
NewWonder ©   (2005-07-11 15:43) [6]

Это в настройках проекта нужно делать?


 
Ega23 ©   (2005-07-11 15:45) [7]

Это в настройках проекта нужно делать?

Run -> Parametrs -> Host application


 
NewWonder ©   (2005-07-11 15:51) [8]

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


 
NewWonder ©   (2005-07-11 16:03) [9]


> Run -> Parametrs -> Host application

Сработало! А по-другому можно как-то сделать? Например, если не известно, какая программа будет использовать dll?


 
Ega23 ©   (2005-07-11 16:05) [10]

Сработало! А по-другому можно как-то сделать? Например, если не известно, какая программа будет использовать dll?

Боюсь, что нет.
Да и зачем? Это же только на этапе отладки нужно...


 
NewWonder ©   (2005-07-11 16:24) [11]

Спасибо!



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

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

Наверх




Память: 0.49 MB
Время: 0.034 c
14-1120650896
aapp
2005-07-06 15:54
2005.07.31
файл *.h


6-1113884655
boalse
2005-04-19 08:24
2005.07.31
Имитация сети на одной машине


9-1113654004
Fords
2005-04-16 16:20
2005.07.31
Кому надо


14-1121146430
cyborg
2005-07-12 09:33
2005.07.31
Бета-тестирование Longhorn началось


9-1112952150
Venom Spawn
2005-04-08 13:22
2005.07.31
Генерация карты