digitalmars.D.learn - Declaring extern(C) declarations with template mixins
- Jacob Carlborg (20/20) Jan 12 2016 Is this supposed to work:
- Mathias Lang (2/20) Jan 12 2016 https://issues.dlang.org/show_bug.cgi?id=12575
- Jacob Carlborg (4/5) Jan 13 2016 Thanks.
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
Jan 12 2016
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
Jan 12 2016
On 2016-01-12 22:27, Mathias Lang wrote:https://issues.dlang.org/show_bug.cgi?id=12575Thanks. -- /Jacob Carlborg
Jan 13 2016