1. Making your own shared libraries

Here's an example of how you can write your
own C routines and add them to your Linux Euphoria
program. Making a shared library with gcc
isn't well documented, but is actually very simple.

1. Create a C source file, say, mylib.c
and define one or more C functions :

int sum(int x)
{
    int i, sum;

    sum = 0;
    for (i = 1; i <= x; i++)
        sum += i;
    return sum;
}


2. Create a Euphoria program, mylib.exu:

include dll.e

atom mylib
integer sum

mylib = open_dll("./mylib.so")

if mylib = NULL then
    puts(2, "Couldn't open mylib.so\n")
    abort(1)
end if

sum = define_c_func(mylib, "sum", {C_INT}, C_INT)

? c_func(sum, {10})   -- calls your C routine


3. Make a shared library from your C source file:

gcc -shared mylib.c -o mylib.so


4. Run your Euphoria program:

exu mylib

The output is: 55
- the sum of the integers from 1 to 10.


Regards,
     Rob Craig
     Rapid Deployment Software
     http://members.aol.com/FilesEu/

new topic     » topic index » view message » categorize

2. Re: Making your own shared libraries

EU>Here's an example of how you can write your
EU>own C routines and add them to your Linux Euphoria
EU>program. Making a shared library with gcc
EU>isn't well documented, but is actually very simple.

EU>1. Create a C source file, say, mylib.c
EU>and define one or more C functions :

EU>2. Create a Euphoria program, mylib.exu:

EU>3. Make a shared library from your C source file:

EU>gcc -shared mylib.c -o mylib.so


EU>4. Run your Euphoria program:

EU>exu mylib


EU>Regards,
EU>     Rob Craig
EU>     Rapid Deployment Software
EU>     http://members.aol.com/FilesEu/

Are you going to add this to Euphoria for DOS at some point? I think
DJGPP supports the same kind of thing since it's a port of GCC, though I
haven't looked into it.

Jeffrey Fielding
JJProg at cyberbury.net
http://members.tripod.com/~JJProg/

new topic     » goto parent     » topic index » view message » categorize

3. Re: Making your own shared libraries

Jeffrey Fielding writes (regarding dynamic linking):
> Are you going to add this to Euphoria for DOS at
> some point? I think DJGPP supports the same kind
> of thing since it's a port of GCC, though I haven't looked
> into it.

I don't think dynamic linking is well supported by DJGPP.
There may be a few crude "hacks" around, but
nothing solid.  I wouldn't switch from WATCOM to DJGPP
just for that.

Regards,
     Rob Craig
     Rapid Deployment Software
     http://members.aol.com/FilesEu/

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu