[fpc-pascal] trying to use C code in .pas on WIN32
conlin664
conlin664 at yahoo.com
Wed Jan 30 23:14:41 CET 2019
ok. I backed up to a simple version.
how I declare the C routine must be the problem,
with nothing,
procedure HelloC; cdecl; external;
I think it's trying to static link it, and gets an
pcode.pas(19,1) Error: Undefined symbol: _HelloC
with anything else
procedure HelloC; cdecl; external 'HelloC';
it links, but dynamically and then the routine is never found.
--------
pcode.pas
program pcode;
{$MODE OBJFPC}
{$R+}
uses
ctypes, sysutils, dos, math;
procedure HelloC; cdecl; external;
type
UINT8 = 0..255;
UINT16 = 0..65535;
UINT32 = Longword;
begin
writeln('Test');
HelloC;
end.
ccode.cpp
#include <stdint.h>
#include <stdio.h>
void HelloC(void)
{
printf("Hello \n");
}
makeit.bat
@set ToolPath=C:\VCAST63\MinGW\bin
@set cc=%ToolPath%\gcc.exe
@set SAVED_PATH=%PATH%
@set PATH=%ToolPath%;%PATH%
@set BASE=%cd%
%CC% -g -I%BASE% -DGNU_WIN32 -O1 -Wunused-variable -c ccode.c -o ccode.o
fpc -MDelphi -MDelphi -vw -Sg -Ci -O1 -Cp386 -OpPENTIUM3 -Ratt ^
-Fu%FPC_BASE%\units\i386-Win32 ^
-Fu%FPC_BASE%\units\i386-Win32\* ^
-Fu%FPC_BASE%\units\i386-Win32\rtl ^
-FlC:\VCAST63\MinGW\lib ^
pcode.pas
@set PATH=%SAVED_PATH%
@exit /b
--
so now I'm back to the error of undefined symbol
C:\FPC\use_c_with_pas>fpc -MDelphi -MDelphi -vw -Sg -Ci -O1 -Cp386
-OpPENTIUM3 -Ratt -Fu\units\i386-Win32 -Fu\units\i386-Win32\* -F
u\units\i386-Win32\rtl -FlC:\VCAST63\MinGW\lib pcode.pas
Free Pascal Compiler version 2.4.4 [2011/04/23] for i386
Copyright (c) 1993-2010 by Florian Klaempfl
Target OS: Win32 for i386
Compiling pcode.pas
Linking pcode.exe
pcode.pas(19,1) Error: Undefined symbol: _HelloC
pcode.pas(19,1) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Error: C:\FPC\2.4.4\bin\i386-Win32\ppc386.exe returned an error exitcode
(normal if you did not specify a source file to be compiled
)
This is on an evil windows machine
thanks for the help guys
john
--
Sent from: http://free-pascal-general.1045716.n5.nabble.com/
More information about the fpc-pascal
mailing list