[gambit-list] printf and the C interface
Cristian Baboi
cristi at ot.onrc.ro
Thu Jun 19 05:01:28 EDT 2008
Hello!
This is my first try to use the C interface of gambit-c.
I used gambit-c 4.2.8 and mingw gcc compiler from CodeBlocks under Windows
XP.
Running alt.exe, I get:
Hello World!
from C
begin
137end
The lines printed from the C function appear before the lines printed by
scheme.
I have two questions:
1) Why the output lines do not appear in the call order ?
2) Is this the correct way to get small executables with gambit-c or it
can be done in a better way ?
Thank you!
functii.c
----------
#include <string.h>
#include <stdio.h>
int hello(char * s){
printf("%s",s);
return strlen(s);
}
test.scm
----------
(c-declare #<<c-declare-end
extern int hello(char *s);
c-declare-end
)
(c-define-type MyInt int)
(c-define-type MyString char-string)
(define myHello (c-lambda (MyString) MyInt "hello" ))
alt.scm
---------
(display "begin") (newline)
(display (myHello "Hello World!\n"))
(display (myHello "from C\n"))
(display "end") (newline)
compile.cmd
------------
@echo off
set PATH=E:\limbaje\CodeBlocks\MinGW\bin;%PATH%
gsc -link -o leg.c test.scm
gcc -shared -mwin32 -m32 -march=pentium4
-IE:\limbaje\gambit-gcc\v4.2.8\include
-IE:\limbaje\CodeBlocks\MinGW\include -LE:\limbaje\gambit-gcc\v4.2.8\lib
-LE:\limbaje\CodeBlocks\MinGW\lib -o test.dll -Wl,--output-def,test.def
-Wl,--kill-at -Wl,--out-implib,test.a -Wl,-s -D___SINGLE_HOST -D___LIBRARY
-D___SHARED test.c leg.c functii.c -lgambc -lws2_32
gsc -link -l leg -o lleg.c alt.scm
gcc -mwin32 -m32 -march=pentium4 -IE:\limbaje\gambit-gcc\v4.2.8\include
-IE:\limbaje\CodeBlocks\MinGW\include -LE:\limbaje\gambit-gcc\v4.2.8\lib
-LE:\limbaje\CodeBlocks\MinGW\lib -D___SINGLE_HOST -D___SHARED -Wl,-s
-Wl,--enable-auto-import alt.c lleg.c test.a -o alt.exe
set PATH=%PATH:E:\limbaje\CodeBlocks\MinGW\bin;=%
gcc -v
========
Reading specs from
E:/limbaje/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/specs
Configured with: ../gcc-3.4.5/configure --with-gcc --with-gnu-ld
--with-gnu-as -
-host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads
--disable-nls --
enable-languages=c,c++,f77,ada,objc,java --disable-win32-registry
--disable-shar
ed --enable-sjlj-exceptions --enable-libgcj --disable-java-awt --without-x
--ena
ble-java-gc=boehm --disable-libgcj-debug --enable-interpreter
--enable-hash-sync
hronization --enable-libstdcxx-debug
Thread model: win32
gcc version 3.4.5 (mingw-vista special)
________ Information from NOD32 ________
This message was checked by NOD32 Antivirus System for Linux Mail Servers.
part000.txt - is OK
http://www.eset.com
More information about the Gambit-list
mailing list