Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.07.31;
Скачать: [xml.tar.bz2];

Вниз

Мучался всю ночь: проблема с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.033 c
3-1119422296
vok
2005-06-22 10:38
2005.07.31
Отчет


3-1119383683
Alex Romanskiy
2005-06-21 23:54
2005.07.31
Объявление UDF


1-1121138794
Delphi_is_cool
2005-07-12 07:26
2005.07.31
"Вырезать", "Копировать" и "Вставить" в TWebBrowser


4-1117618328
-=S.S=-
2005-06-01 13:32
2005.07.31
Работа с giveio.sys


1-1121157100
Drakosha
2005-07-12 12:31
2005.07.31
Как правильнее реализовывать следующию задачу





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский