Thread overview | ||||||
---|---|---|---|---|---|---|
|
November 29, 2004 Linking doubts | ||||
---|---|---|---|---|
| ||||
Hi! I have two linking questions 1) If I create a module, and then import it in another source file, how come that a function defined in the module is "undefined", if I try to dmd only the source file? I have to compile the module, and then link the source file against the module. Is it right or I'm missing something? 2) Is it possible to make D functions available to a C program? I tried linking the C source code and the D object altogether with phobos, but with errors... what I'm supposed to do? I thank you in advance:) Carotinho |
November 30, 2004 Re: Linking doubts | ||||
---|---|---|---|---|
| ||||
Posted in reply to Carotinho | Carotinho wrote: > Hi! > I have two linking questions > > 1) If I create a module, and then import it in another source file, how come > that a function defined in the module is "undefined", if I try to dmd only > the source file? I have to compile the module, and then link the source > file against the module. Is it right or I'm missing something? Importing a module gives you the ability to call functions in that module. However, the function code is only compiled in the *other* module. The C analogy would be that when you import a module, it's like #include-ing a header, while compiling a module is is like compiling a C file. So yes, you have to compile and link together all modules which include functions that you need. > 2) Is it possible to make D functions available to a C program? I tried > linking the C source code and the D object altogether with phobos, but with > errors... what I'm supposed to do? You can make a D function callable from C like this: extern(C) int myFunction(<args>) { <code> } You can make a C function callable from D like this: extern(C) int myOtherFunction(<args>); |
November 30, 2004 Re: Linking doubts | ||||
---|---|---|---|---|
| ||||
Posted in reply to Russ Lewis | Russ Lewis wrote:
>
> You can make a C function callable from D like this:
> extern(C) int myOtherFunction(<args>);
>
And, just for clarifying, you need to link the appropriate object file in.
-Sebastian
|
November 30, 2004 Re: Linking doubts | ||||
---|---|---|---|---|
| ||||
Posted in reply to Sebastian Beschke | Sebastian Beschke wrote:
> Russ Lewis wrote:
>>
>> You can make a C function callable from D like this:
>> extern(C) int myOtherFunction(<args>);
>>
>
> And, just for clarifying, you need to link the appropriate object file in.
>
> -Sebastian
Thanks!
I -ahem- misread the docs and thought that extern (C) was here just to link
TO C :)
Byez!
|
Copyright © 1999-2021 by the D Language Foundation