[Issue 12721] New: Unresolved Symbols when Linking
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Fri May 9 02:57:42 PDT 2014
https://issues.dlang.org/show_bug.cgi?id=12721
Issue ID: 12721
Summary: Unresolved Symbols when Linking
Product: D
Version: D2
Hardware: x86_64
OS: Linux
Status: NEW
Severity: normal
Priority: P1
Component: DMD
Assignee: nobody at puremagic.com
Reporter: puneet at coverify.org
Compiles and runs when the modules are compiled and linked in one go:
$ dmd bar.d foo.d;
But if the modules are compiled separately, I get missing symbols:
$ dmd -c bar.d
$ dmd -c foo.d
$ dmd -ofbar bar.o foo.o
bar.o: In function
`_D3foo34__T3FooS19_D3foo4Wrap3fooMFZvViN1Z3Foo31__T4elabTC3foo4WrapTC3foo4WrapZ4elabFNaNbNfC3foo4WrapC3foo4WrapZv':
bar.d:(.text._D3foo34__T3FooS19_D3foo4Wrap3fooMFZvViN1Z3Foo31__T4elabTC3foo4WrapTC3foo4WrapZ4elabFNaNbNfC3foo4WrapC3foo4WrapZv+0xe):
undefined reference to
`_D3foo3Bar42__T4FooTTC3foo4WrapS19_D3foo4Wrap3fooMFZvZ4FooT7__ClassZ'
bar.d:(.text._D3foo34__T3FooS19_D3foo4Wrap3fooMFZvViN1Z3Foo31__T4elabTC3foo4WrapTC3foo4WrapZ4elabFNaNbNfC3foo4WrapC3foo4WrapZv+0x2a):
undefined reference to
`_D3foo3Bar42__T4FooTTC3foo4WrapS19_D3foo4Wrap3fooMFZvZ4FooT6__ctorMFNaNbNiNfC3foo4WrapZC3foo3Bar42__T4FooTTC3foo4WrapS19_D3foo4Wrap3fooMFZvZ4FooT'
collect2: error: ld returned 1 exit status
--- errorlevel 1
// module bar.d
import foo;
class Frop: Wrap{}
void main() {
Frop frop = new Frop;
frop.bar();
}
// module foo.d
class Foo(alias F, size_t S=0) {
static elab(T, L)(T t, L l) {
t.new t.FooT!(T, F)(t);
}
}
auto reDelegate(alias F, T)(T e) {
final getFuncName() {
return "e." ~ __traits(identifier, F);
}
typeof(& mixin(getFuncName)) dg;
return dg;
}
void bar(T)(T t)
{
static if(t.tupleof.length) {
t.tupleof[0].elab(t, t);
}
static if(is(T B == super) && is(B[0] : Bar)) {
B[] b ;
bar(b);
}
}
class Bar {
class FooT(T, alias F): Foo!(F) {
this(T t) {
auto dg = reDelegate!F(t);
}
}
}
class Wrap: Bar {
void foo() {}
Foo!(foo, -1) foo_;
}
--
More information about the Digitalmars-d-bugs
mailing list