Unit mit h2pas erzeugen

Antworten
Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Unit mit h2pas erzeugen

Beitrag von Mathias »

Ich habe mit folgenden Kommando eine Unit uns eine C-Header erzeugt, was auch klappte.

Code: Alles auswählen

h2pas /usr/include/X11/Xaw/Box.h -p -T -S -d -c -o /n4800/DATEN/X11-units/Xaw/Box.pp
Die Kommandzeilenparameter habe ich von der Unit "xlib" abgeguckt.

So nun zum Problem.
Wen ich die Unit "Box" in meinem Programm einbinde, bleibt er auf folgender Zeile hängen:

Code: Alles auswählen

{$include <X11/Xmu/Converters.h>}
DIes ist auch logisch, da FPC mit dieser *.h nichts anfangen kann. Dies müsste eigentlich am Anfang von der Unit "Box" stehen mit

Code: Alles auswählen

uses
Converters;
Eine Converts.pp habe ich schon generiert. Nur diese bleibt dann auch bei eine $include hängen.

Kann man dies beim erzeugen mit h2pas umgehen oder ist da Handarbeit angesagt ?

Ganz am Anfang der Unit "xlib" hat es auch ein Uses-Klausel

Code: Alles auswählen

unit xlib;
interface
{$mode objfpc}
uses
  ctypes,x;   
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Unit mit h2pas erzeugen

Beitrag von theo »

Die h2pas Optionen sind:
Usage : h2pas [options] filename
Where [options] is one or more of:
-d Use external;
-D use external libname name 'func_name';
-e change enum type to list of constants
-c Compact outputmode, less spaces and empty lines
-C Use types in ctypes unit
-i create include files (no unit header)
-l libname Specify the library name for external
-o outputfilename Specify the outputfilename
-p Use "P" instead of "^" for pointers
-pr Pack all records (1 byte alignment)
-P use proc. vars for imports
-s strip comments from inputfile
-S strip comments and don't write info to outputfile.
-t Prepend typedef type names with T
-T Prepend typedef type names with T, and remove _
-u unitname Specify the name of the unit.
-v replace pointer parameters by call by reference parameters
-w special for win32 headers
-x handle SYS_TRAP of PalmOS header files
Ohne ein bisschen Handarbeit geht es nach meiner Erfahrung meistens nicht.

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Unit mit h2pas erzeugen

Beitrag von Mathias »

Ich habe grade gesehen, das es noch andere Tools gibt.
https://wiki.freepascal.org/C_to_Pascal
Hat einer von euch schon Erfahrung damit gemacht ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten