Can D interface with Free Pascal?
Taylor Hillegeist via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Jan 29 19:43:59 PST 2016
On Friday, 29 January 2016 at 01:47:11 UTC, Mike Parker wrote:
> On Thursday, 28 January 2016 at 19:49:22 UTC, Taylor Hillegeist
> wrote:
>> On Thursday, 28 January 2016 at 19:33:22 UTC, bearophile wrote:
>>> FreeSlave:
>>>
>>> On Thursday, 28 January 2016 at 08:15:38 UTC, FreeSlave wrote:
>>>> Not directly. You can declare cdecl function on Free Pascal
>>>> side and call it as extern(C).
>>>
>>> What about extern(Pascal)?
>>> https://dlang.org/spec/attribute.html#linkage
>>>
>>> Bye,
>>> bearophile
>>
>> Cool!, I did find this little gem. but still havent gotten a
>> hello world to work. I need to figure out which libraries i
>> need to include for fpc dependencies.
>
> AFAIK, FreePascal does not use the pascal calling convention by
> default. If this page [1] is correct, the default convention is
> 'register' and can be changed to something else (like pascal or
> cdecl) with a command-line switch [2].
>
> [1] http://www.freepascal.org/docs-html/prog/progse22.html
> [2] http://www.freepascal.org/docs-html/prog/progsu87.html
Working through a simple example. I tried the cdecl option but
for some reason i can compile but when i run my Gethello it cant
find the shared library in the same folder?
====================================================================
taylor at taylor-NE510:~/Projects/PASCAL$ ls
Gethello Gethello.d hello.pas libhello.so
taylor at taylor-NE510:~/Projects/PASCAL$ cat Gethello.d
extern(C) void SubStr();
void main(){
SubStr();
}
taylor at taylor-NE510:~/Projects/PASCAL$ cat hello.pas
library subs;
procedure SubStr(); cdecl;
begin
write('hello World');
end;
exports
SubStr;
end.
taylor at taylor-NE510:~/Projects/PASCAL$ nm libhello.so
0000000000003ac0 T SubStr
taylor at taylor-NE510:~/Projects/PASCAL$ ./Gethello
./Gethello: error while loading shared libraries: libhello.so:
cannot open shared object file: No such file or directory
=======================================================================
More information about the Digitalmars-d-learn
mailing list