On 03 Jan 2006, at 18:49, L505 wrote:
A very easy way to solve all problems in FPC is to simply use the
cmem unit in the dll(s) and in your main program. It should have the
same effect as Delphi's sharemem unit.
Would that work with C programs that called a library? I think
sharemem only works
for borland applications (i.e. pascal and C++ builder).
If a Pascal program returns a reference counted type to a C library,
then you get a memory leak, sharemem/cmem or not. If a C program
passes a pchar to a function that expects an ansistring, you can get
any sort of behaviour ranging from no problem to program crashes
(which is logical, since the C program is passing a variable of a
wrong type).
You cannot declare a function as returning an "ansistring" in C,
since C doesn't know the ansistring type. So you cannot properly use
functions which accept or return values of that type from C programs.
It's as simple as that. You simply have to declare your functions
which you want to be callable from C with types that also exist in C
(or which can be constructed to be 100% the same in C).
Jonas
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal