Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 11, 2025 22:58

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: dll und Listen
BeitragVerfasst: Mo Dez 03, 2007 12:05 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 07, 2006 13:37
Beiträge: 83
Wohnort: Partenheim
Hi!

Vor kurzem hab' ich angefangen, eine meiner Units in eine dll zu verpacken.
Eine Methode davon erstellt eine Liste mittels glGenLists(...).
Beim externen Aufrufen dieser Methode, bekomme ich jedoch folgende Exception:

"Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000"

Hat jemand 'ne Ahnung, warum das passiert?

Vielen Dank,
Conan

_________________
THE TRUTH IS NOT OUT THERE!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 03, 2007 12:27 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Was benutzt du denn für einen Header? Die dglOpenGL? Wenn ja dann musst du natürlich in der DLL auch dort die opengl32.dll laden und deren Funktionspointer auslesen. Kurzum du musst den Header initialisieren. InitOpenGL, ReadExtensions und ReadImplementedProperties.

Einen neuen Kontext benötigst du nicht (darfst du nicht erstellen), da automatisch der Kontext des Threads benutzt wird. Also der der Hauptanwendung. Entsprechend musst du vor dem Laden in der DLL auch schon dafür sorgen, dass ein Kontext existiert und aktiviert wurde.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 03, 2007 19:32 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 07, 2006 13:37
Beiträge: 83
Wohnort: Partenheim
Tatsächlich, es liegt an der Initialisierung. Und somit liegt es nicht am Erstellen einer Liste, sondern am Aufrufen einer OpenGL-Funktion :)
Mal wieder vielen Dank, Lossy Ex.

Es wundert mich nur, dass die Hauptanwendung, bevor sie irgendeine Methode aus der dll aufruft, bereits InitOpenGL() aufgerufen hat. Wieso muss denn dann für die dll zusätzlich noch einmal der Header initialisiert werden?

_________________
THE TRUTH IS NOT OUT THERE!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 03, 2007 20:48 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Weil die Variablen in der Unit separat für die DLL vorliegen. Schließlich ist die dglOpenGL.pas eine dann in die DLL einkompilierte Datei, die ihren eigenen Speicher hat. Von daher werden auch die Adressen separat gesetzt.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 03, 2007 21:09 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Genau. Das was Lord Horazont sagt stimmt. Und falls dz dich wunderst warum man im Hauptprogramm kein InitOpenGL aufrufen muss. Das liegt wohl daran, dass du CreateRenderContext aus dem Header benutzt. Da passiert das schon automatisch.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 03, 2007 21:40 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 07, 2006 13:37
Beiträge: 83
Wohnort: Partenheim
Vielen Dank, das ist wirklich gut zu wissen :)

Nochmal Danke für die Hilfe,
Conan

_________________
THE TRUTH IS NOT OUT THERE!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 18 Queries | GZIP : On ]