![]() |
newton 2.0 Lazarus und Ubuntu, Header Übersetzung von c++
Liste der Anhänge anzeigen (Anzahl: 1)
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 ![]() 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:
eine Übersetzung gesehen hat, dann müste man alle anderen sachen analog übersetzen können.
// NEWTON_API void NewtonDestroy (const NewtonWorld* newtonWorld);
Procedure NewtonDestroy(const newtonWorld:PNewtonWorld); 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.. |
Re: newton 2.0 Lazarus und Ubuntu, Header Übersetzung von c+
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 |
Re: newton 2.0 Lazarus und Ubuntu, Header Übersetzung von c+
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 ...
|
Re: newton 2.0 Lazarus und Ubuntu, Header Übersetzung von c+
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:
Zitat:
|
Re: newton 2.0 Lazarus und Ubuntu, Header Übersetzung von c+
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; |
Re: newton 2.0 Lazarus und Ubuntu, Header Übersetzung von c+
Liste der Anhänge anzeigen (Anzahl: 2)
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:
|
Re: newton 2.0 Lazarus und Ubuntu, Header Übersetzung von c+
Juhee,
Ich habe es nun endlich geschafft. 1. Es gibt bereits Header für Newton.dll ver 2.0 diese sind ![]() 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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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 by Thomas Breitkreuz