[fpc-pascal] trying to use C code in .pas on WIN32
conlin664
conlin664 at yahoo.com
Wed Jan 23 22:30:38 CET 2019
I've done research, but am just missing something.
my .pas code links just fine, but doesn't RUN.
( first writeln never appears )
If I remove the external call to C code, then the writeln works as normal.
Problem:
I have c code, which I'm compiling on a WIN32 machine ( yes the horror )
using GCC 4.5.2 target mingw32
It generates .o files which i grouped together with ar into common.a
I then renamed common.a to be libcommon.a
Then I have a
Common.pas file:
unit Common;
interface
uses
sysutils, dos, CTypes;
{$linklib libcommon.a }
procedure CutilInit; cdecl; external 'CutilInit';
implementation
end.
the a CommonTest.pp file:
Program commonTest;
uses
Common;
begin
writeln('got here');
CutilInit();
end.
fpc.exe -TWin32 -Mdelphi -vw -Sg -Ci -O1 -Cp386 -XS -gl -p- -b-
is the relevant way I'm invoking fpc
It links, but then does nothing on execution.
If I change the C line to be:
procedure CutilInit; cdecl; external;
I think get a link error
Undefined Symbol: _CutilInit
Any ideas ?
Does the linklib define need to be below where I declare the C routines ?
Is it something to do with WINDOWS.. ( aka the _ in the name )
Maybe I need different options on the C compile..
--
Sent from: http://free-pascal-general.1045716.n5.nabble.com/
More information about the fpc-pascal
mailing list