AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OpenCascade

Ein Thema von Raible · begonnen am 14. Jul 2016 · letzter Beitrag vom 29. Jul 2016
Antwort Antwort
Raible

Registriert seit: 12. Mär 2012
30 Beiträge
 
#1

OpenCascade

  Alt 14. Jul 2016, 13:46
Hallo zusammen,

ich versuche gerade OpenCascade von Delphi aus anzusprechen.
Bisher gelingt es mir die OCC Quellen mit VS-2015 zu übersetzen,
und eine eigene Wrapper.dll zu erzeugen. Die Wrapper.dll besitzt
bislang nur zwei C Funktionen zum erzeugen und löschen eines
C++ Objekts (WNT_Window).

Wenn ich die Wrapper.dll in einem Delphi aufrufe egal ob dynamisch
oder statisch gebunden erscheint die Meldung

--------------------------------
Debug Assertion Failed!

Programm: X:\<Pfad ...>\OCC_Test.exe
File: minkernel\crts\ucrt\scr\appcrt\lowio\lseek.cpp
Line: 74

Expression: ("Invalid file descriptor",0)

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
----------------------------------

Nachdem diese Meldung vier mal mit der Taste "Ignorieren"
bestätigt wurde startet das Programm ganz normal.
Meine beiden Funktionen können dann auch aufgerufen werden.

In VS-2015 Aufgerufen ergibt sich die unten beigefügte Aufrufliste.

Hat jemand einen Tipp für mich wie ich da weiter kommen kann?
Angehängte Grafiken
Dateityp: png OCC_Debug_Stack.png (12,4 KB, 34x aufgerufen)
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#2

AW: OpenCascade

  Alt 14. Jul 2016, 16:24
Gibt es nicht fertige Dlls?!

Gibt es hier nicht welche?

Der Autor hat anscheinend auch ein Wrapper für Python erstellt.
Achtung: Bin kein Informatiker sondern komme vom Bau.

Geändert von Jens01 (14. Jul 2016 um 16:34 Uhr)
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: OpenCascade

  Alt 14. Jul 2016, 16:44
Ich würde sagen Du versuchst irgendwo auf die console zu schreiben.
Sind da debugprints oder so etwas in Deiner Source?
Wir haben hier eine Wrapper Dll zu Opencascade die auch mit VC2015 compiliert ist.
Läuft ohne Probleme
Fritz Westermann
  Mit Zitat antworten Zitat
Raible

Registriert seit: 12. Mär 2012
30 Beiträge
 
#4

AW: OpenCascade

  Alt 14. Jul 2016, 19:21
In meiner Source ist nur die zwei Funktionen um mal Testweise ein C++ Objekt zu erzeugen und wieder zu löschen. Wenn dann sind die debugprints in den Original Quellen.
Laut Aufrufliste sind noch nicht einmal OCC DLLs involviert (sofern ich das richtig interpretiere).

Gibt es denn einen Schalter um debugprints zu deaktivieren?

Habt ihr eure Wrapper DLL selber erzeugt?


die tpaviot Quellen auf die Jens01 verweist werde ich mir mal genauer anschauen. Vielen dank für den Tipp.
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: OpenCascade

  Alt 15. Jul 2016, 08:11
Ja wir haben die Dll selber gemacht. Ist aber sehr speziell an unsere Bedürfnisse angepasst.
Aber um bei Deinem Problem zu bleiben, nur mit der Grafik vom Stacktrace is das schwer zu sagen.
Warum versuchst Du nicht einfach mal die Dll im Debugger laufen zu lassen?
Fritz Westermann
  Mit Zitat antworten Zitat
Raible

Registriert seit: 12. Mär 2012
30 Beiträge
 
#6

AW: OpenCascade

  Alt 18. Jul 2016, 18:38
Debuggen habe ich nun endlich hinbekommen.

In "UnitsAPI.cxx" werden vier Parameter gesetzt.
Code:
static OSD_Environment env1("CSF_UnitsLexicon");
static OSD_Environment env2("CSF_UnitsDefinition");
#ifdef _WIN32
static OSD_Environment env3("CSF_CurrentUnits");
static OSD_Environment env4("CSF_MDTVCurrentUnits");
Jede Zeile verursacht jeweils die beschriebene nichtssagende Fehlermeldung.


OSD_Environment ist ein Object mit folgenden Feldern:
Code:
...
private:
  TCollection_AsciiString myName;
  TCollection_AsciiString myValue;
  OSD_Error myError;
Der Constructor weist myName zu.
Dabei wird wohl Speicher reserviert die Textlänge hinterlegt
und der übergebene Parameter in den reservierten Speicher kopiert.


Möglicherweise stimmt etwas mit der Speicherverwaltung nicht.

Hat jemand eine Idee wie ich da weiterkommen kann?
Gibt es in Delphi Stellschrauben die ich verwenden könnte
irgend eine Konfiguration oder einbinden einer
spezieller Unit(Speichermanager)?
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz