Re: Declaring extern(C) declarations with template mixins

2016-01-13 Thread Jacob Carlborg via Digitalmars-d-learn

On 2016-01-12 22:27, Mathias Lang wrote:


https://issues.dlang.org/show_bug.cgi?id=12575


Thanks.

--
/Jacob Carlborg


Re: Declaring extern(C) declarations with template mixins

2016-01-12 Thread Mathias Lang via Digitalmars-d-learn

On Tuesday, 12 January 2016 at 21:22:46 UTC, Jacob Carlborg wrote:

Is this supposed to work:

template Foo()
{
extern(C) int printf(in char*, ...);
}

mixin Foo;

void main()
{
printf("foo\n");
}

It fails with a linker error, undefined symbol, due to not 
applying C mangling:


Undefined symbols for architecture x86_64:
  "__D4main8__mixin76printfUxPaYi", referenced from:
  __Dmain in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to 
see invocation)


https://issues.dlang.org/show_bug.cgi?id=12575


Declaring extern(C) declarations with template mixins

2016-01-12 Thread Jacob Carlborg via Digitalmars-d-learn

Is this supposed to work:

template Foo()
{
extern(C) int printf(in char*, ...);
}

mixin Foo;

void main()
{
printf("foo\n");
}

It fails with a linker error, undefined symbol, due to not applying C 
mangling:


Undefined symbols for architecture x86_64:
  "__D4main8__mixin76printfUxPaYi", referenced from:
  __Dmain in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see 
invocation)


--
/Jacob Carlborg