How do I make an extern function?

Jonathan M Davis jmdavisprog at gmail.com
Mon Jun 28 18:06:16 PDT 2010


On Monday, June 28, 2010 17:51:09 Simen kjaeraas wrote:
> ////////////////////
> module a;
> 
> extern void foo( );
> 
> void bar( ) {
>      foo( );
> }
> ////////////////////
> module b;
> 
> import std.stdio;
> 
> void foo( ) {
>      writeln( "Hi!" );
> }
> ////////////////////
> 
> The above does not work (Error 42: Symbol Undefined _D1a3fooFZv). Adding
> extern to foo in module b changes nothing. extern( C ) works, but seems
> like a hack. Better ideas?

Um, extern isn't needed in D. All you need to do is make the function public and 
then import the module. I would expect this to work:

////////////////////
module a;

import b;

void bar( ) {
     foo( );
}
////////////////////
module b;

import std.stdio;

void foo( ) {
     writeln( "Hi!" );
}
////////////////////

- Jonathan M Davis


More information about the Digitalmars-d-learn mailing list