AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal newton 2.0 Lazarus und Ubuntu, Header Übersetzung von c++
Thema durchsuchen
Ansicht
Themen-Optionen

newton 2.0 Lazarus und Ubuntu, Header Übersetzung von c++

Ein Thema von Corpsman · begonnen am 12. Aug 2009 · letzter Beitrag vom 13. Aug 2009
Antwort Antwort
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#1

newton 2.0 Lazarus und Ubuntu, Header Übersetzung von c++

  Alt 12. Aug 2009, 08:21
Guten Morgen,

Ich habe mir ein Linux zugelegt, und möchte mit Lazarus nun "fast" genau das selbe können was ich mit Delphi schon hinbekommen hatte.

Erstaunlicherweise ist hierbei auch sehr viel machbar gewesen.

Doch nun bin ich an eine für mich "unüberwindbare" Grenze gestoßen und brauche eure Hilfe.

Ich versuche die Newton.dll unter Linux zum laufen zu bringen.

Doch leider gibt es da ein Problem. Die NewtonImport.pas unterstützt zwar Linux und FPC auch, allerdings kann man nirgens eine passende *.so Datei runterladen.

Die libNewton.so die es gibt ist schon Newton 2.0 und da Sascha wohl einschneidende änderungen von 1.53 nach 2.0 vorgenommen hat. Ist die NewtonImport.pas unbrauchbar...

Nun habe ich in einschlägigen Forem nachgefragt, und anscheinend hat noch niemad eine neue NewtonImport.pas geschrieben.

Die entsprechende Newton.h sowie die libNewton.so gibt es Hier

Also ist mein Plan nun die NewtonImport.pas selbst zu erstellen. Mein Hauptproblem hierbei ist natürlich das ich kein C, bzw C++ kann.

Daher suche ich hier nun jemanden der den Anfang macht. Sprich eine "Grundversion" in der auch nicht weiter viel funktionieren mus, auser eben das mein Lazarus es kompiliert, und ich dann sehen kann wie ich den Rest übersetzen mus.

So wie ich mir das vorstelle ist das Übersetzen, nicht weiters schwer wenn man einmal Anhand z.b. der procedure

Delphi-Quellcode:
// NEWTON_API void NewtonDestroy (const NewtonWorld* newtonWorld);
Procedure NewtonDestroy(const newtonWorld:PNewtonWorld);
eine Übersetzung gesehen hat, dann müste man alle anderen sachen analog übersetzen können.

Das Problem stellt natürlich das "Newton_API" dar, das ich da oben nun noch nicht übersetzt habe. Und klar ist das da ja auch noch fehlt wie die libary eingebunden werden mus.

Ich weis zwar das ein c "struct" irgendwas wie ein Record in Pascal ist, aber wie's genau geht weis ich auch nicht ..

Wenn da drausen also irgend ein Netter Mensch ist, der mir diesen "Anfang" macht, dann könnte ich den Rest schon übernehmen, und die Delphi Community könnte Newton2.0 auch nutzen.

Zum Ansehn habe ich euch mal den Header mit Hochgeladen..
Angehängte Dateien
Dateityp: h newton_768.h (52,9 KB, 3x aufgerufen)
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#2

Re: newton 2.0 Lazarus und Ubuntu, Header Übersetzung von c+

  Alt 12. Aug 2009, 11:27
Hi!

Ich weiß jetzt zwar nicht inwieweit die Newton Header C++ statt C sind, aber du kannst ja einfach mal das Tool h2pas, das bei FPC bereits dabei ist, ausprobieren. Rufst du es ohne Parameter auf, werden dir alle verfügbaren Parameter angezeigt. Sehr nützlich sind "Kommentare entfernen" (-S), "PIrgendwas statt ^Irgendwas" (-p), "weniger Leerzeilen" (-c) und "verwende 'external libname name 'func_name''" (-D zusammen mit "-l libnewton.so").

Am besten einfach mal ausprobieren, was dann rauskommt. Im Normalfall heißt die Datei dann "newton.pas", wenn der Header "newton.h" heißt. Sollte ein Fehler auftauchen, kannst du ja einfach ein paar Codestellen auskommentieren und nochmal probieren. Wenn zu viel C++ drin ist, dann hilft das aber auch nichts...

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#3

Re: newton 2.0 Lazarus und Ubuntu, Header Übersetzung von c+

  Alt 12. Aug 2009, 16:25
ich will dich ja nicht enttäuschen, aber auf meinem system gibts keine Anwendung die sich h2pas schimpft, nicht mal mit aptitude bekomme ich das installiert ...
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#4

Re: newton 2.0 Lazarus und Ubuntu, Header Übersetzung von c+

  Alt 12. Aug 2009, 19:07
Also ich hab nun rausgefunden wie man das h2pas aufs system bekommt.

Leider klappts nicht ganz er bringt nen Syntax fehler bei teilen wie :

Zitat:
typedef struct NewtonMesh{} NewtonMesh;
und
Zitat:
struct NewtonConvexHullParam
{
int m_vertexCount;
int m_vertexStrideInBytes;
int m_faceCount;
dFloat* m_vertex;
};
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: newton 2.0 Lazarus und Ubuntu, Header Übersetzung von c+

  Alt 12. Aug 2009, 19:43
Delphi-Quellcode:
type
  TNewtonMesh = record
  end;
  PNewtonMesh = ^TNewtonMesh;
  PPNewtonMesh = ^PNewtonMesh;
Delphi-Quellcode:
type
  TdFloat = double; //bzw. float
  PdFloat = ^TdFloat;

  TNewtonConvexHullParam = record
    m_vertexCount: Integer;
    m_vertexStrideInBytes: Integer;
    m_faceCount: Integer;
    m_vertex: PdFloat;
  end;
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#6

Re: newton 2.0 Lazarus und Ubuntu, Header Übersetzung von c+

  Alt 13. Aug 2009, 07:41
Also, das Tool funktioniert so nicht.

Es übersetzt, zwar die ganzen Basistypen, aber sobald es an die "External" proceduren geht, schreibt es nur noch "Error".

Also habe ich mal versucht das von Hand zu machen. In Anlehnung an die alte version hab ich die Unit wieder

NewtonImport.pas

genannt.

Ich habe mich auf das Wesentliche Beschränkt und mal versucht nur eine Einzige Funktion "NewtonCreate" rein zu machen, wenn diese
eine Geht , dann kann ich den Rest ja Analog übernehmen, dachte ich mir.

Compilieren tut ers nun aber leider nur bedingt...

Der Compiler bewirft mich mit :

Zitat:
./libNewton.so: undefined reference to `__cxa_guard_abort'
./libNewton.so: undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
./libNewton.so: undefined reference to `vtable for __cxxabiv1::__class_type_info'
./libNewton.so: undefined reference to `__cxa_pure_virtual'
./libNewton.so: undefined reference to `operator delete(void*)'
./libNewton.so: undefined reference to `__cxa_guard_acquire'
./libNewton.so: undefined reference to `vtable for __cxxabiv1::__vmi_class_type_info'
./libNewton.so: undefined reference to `__cxa_guard_release'
./libNewton.so: undefined reference to `__gxx_personality_v0'
project1.lpr(20,1) Error: Error while linking
project1.lpr(20,1) Fatal: There were 1 errors compiling module, stopping
nicht das ich irgendwie verstehen würde was das nun bedeutet, kann mir das einer von euch sagen ?
Angehängte Dateien
Dateityp: zip libnewton_109.zip (496,0 KB, 0x aufgerufen)
Dateityp: pas newtonimport_112.pas (653 Bytes, 1x aufgerufen)
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#7

Re: newton 2.0 Lazarus und Ubuntu, Header Übersetzung von c+

  Alt 13. Aug 2009, 15:33
Juhee,

Ich habe es nun endlich geschafft.

1. Es gibt bereits Header für Newton.dll ver 2.0

diese sind hier

Allerdings sind diese sehr buggy und funktionieren nicht unter FPC, zumindest nicht wenn man nicht folgende änderungen vornimmt.

- die Windows units rauswerfen und durch geeignete Linux units ersetzen
- die Compilerswitches an geeigneter stelle anpassen

{$linklib stdc++}

- die libnewton.so mus umbenannt werden in "libNewton.so" und an einer geeigneten stelle gespeichert werden, bei mir wars
/usr/lib

Dann gings.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  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 09:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz