digitalmars.D.learn - Public imports with D interface files?
- Sean Eskapp (16/16) Sep 03 2011 I'm compiling a very simple D interface file:
- David Nadlinger (6/22) Sep 03 2011 Are you specifying std_ext/typetuple.di or whatever it is called when
- Sean Eskapp (3/34) Sep 03 2011 I wasn't including it on the command line; I thought I didn't need to. T...
I'm compiling a very simple D interface file: module std_ext.typetuple; public import std.typetuple class TypeArray(T...) { } Compiling it as such: dmd -debug -unittest -D -Dddocs -w -H -o- std_ext/typetuple.d And including it as such: import std_ext.typetuple; void main() { TypeArray!(int, double) blah; } I get a linker error "Symbol Undefined _D7std_ext9typetuple12__ModuleInfoZ" Removing the public import removes this error. How can I fix this?
Sep 03 2011
Are you specifying std_ext/typetuple.di or whatever it is called when compiling the main module? The public import probably triggers creation of a module constructor as it really creates aliases for the symbols from the imported module. David On 9/4/11 3:17 AM, Sean Eskapp wrote:I'm compiling a very simple D interface file: module std_ext.typetuple; public import std.typetuple class TypeArray(T...) { } Compiling it as such: dmd -debug -unittest -D -Dddocs -w -H -o- std_ext/typetuple.d And including it as such: import std_ext.typetuple; void main() { TypeArray!(int, double) blah; } I get a linker error "Symbol Undefined _D7std_ext9typetuple12__ModuleInfoZ" Removing the public import removes this error. How can I fix this?
Sep 03 2011
I wasn't including it on the command line; I thought I didn't need to. That fixed it, thanks! == Quote from David Nadlinger (see klickverbot.at)'s articleAre you specifying std_ext/typetuple.di or whatever it is called when compiling the main module? The public import probably triggers creation of a module constructor as it really creates aliases for the symbols from the imported module. David On 9/4/11 3:17 AM, Sean Eskapp wrote:I'm compiling a very simple D interface file: module std_ext.typetuple; public import std.typetuple class TypeArray(T...) { } Compiling it as such: dmd -debug -unittest -D -Dddocs -w -H -o- std_ext/typetuple.d And including it as such: import std_ext.typetuple; void main() { TypeArray!(int, double) blah; } I get a linker error "Symbol Undefined _D7std_ext9typetuple12__ModuleInfoZ" Removing the public import removes this error. How can I fix this?
Sep 03 2011