Главная страница
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.046 c
4-1117600220
КиТаЯц
2005-06-01 08:30
2005.07.31
Своя закладка в "Свойства файла"


14-1121059550
Ega23
2005-07-11 09:25
2005.07.31
С днем рождения! 11 июля


14-1120582323
romychk
2005-07-05 20:52
2005.07.31
Формат файла


14-1121020009
Фонарь
2005-07-10 22:26
2005.07.31
Кто и как придумывает слова?


1-1121143960
Rentgen
2005-07-12 08:52
2005.07.31
Не работает Click