C to Pascal
One of the weakness of the Pascal, compared to C language is lower number of existing libraries. The reason for that, is due to unpopularity of the language itself. There're a lot of libraries already implemented in C, and thus there's no reason to rewrite them to pascal and/or create a Pascal version.
While Pascal is a high level language, it's also "low level" enough to interact with the very basic API functions used by C-language. Thus using the existing C-based libraries in Pascal program is a common practice. Also need to note, that since the most popular Operating System low level APIs are designed to be used by by C-language.
Each C-language library comes with a header and binaries. In order to use the library the header needs to be converted to pascal and binaries must be used by the Pascal program (in form of statically or dynamically linked library). While usage of the library is resolved by the linker or in the runtime, the task of converting a C-headers to Pascal is far more complicated job.
Problems and solutions are explained in these good arcticles:
It needs to be noted that the task of converting C headers to Pascal headers could be done by a machine (to some extent, but unlikely could to be done 100%). There has been many utilities written in order to automate the task.
C to Pascal converstion tools and librariesThere might be much more found online (please add them to this list).
|H2Pas||FPC team official yylex-based tool to convert C-headers to Pascal. Issues could be reported on Mantis.||Yes||No||somewhat||command line or H2Paswizard|
|C2Pas32||Freeware, but closed source solution||Yes||Yes||command line|
|C To Pascal Converter|
|Dr. Bob's HeadConv|
|Rudy's Conversion Helper Package||On the site a lot of useful information can be found.|
|Chelper||The project started as ObjC converter, thus it does understand ObjC notation. Though development is stalled a few years ago||Yes||No||somewhat - no expressions||No||Yes||command line, GUI as Lazarus Plugin|
|ToPas C-to-Pascal||The original author is Hans-Peter Diettrich|
|CToPas||The latest one and new implementation by Dr Diettrich||Yes||GUI|
|Objective Pascal Framework Parser||PHP written tool is used by FPC team for Cocoa and iOS bindings. Was designed to handle ObjC specifically||Yes||No||OSX versions only||No||Yes||command line|
|SWIG||Non pascal based solution; aimed at generating bindings for C++||Yes||Yes||Yes|