dlang-community / std_data_json

Phobos candidate JSON implementation.
25 stars 13 forks source link

Failed to link on linux #41

Open Heromyth opened 5 years ago

Heromyth commented 5 years ago

OS: Linux Mint 19.1 Cinnamon Compiler: DMD 2.084 Command line: dub run --compiler=dmd -a=x86_64 -b=debug

Test code:

import std.stdio;
import stdx.data.json;

void main() {
    // JSONValue value = toJSONValue(`{"name": "D", "kind": "language"}`);
}

Error message:

Linking...
.dub/build/application-debug-linux.posix-x86_64-dmd_2084-5FD92AF6B8B9BBBDE0C983C552F81BF8/demo.o: In function `_D15taggedalgebraic__T15TaggedAlgebraicTS4stdx4data4json5value9JSONValue12PayloadUnionZQCn11__xopEqualsFKxSQEb__TQDnTQCzZQDvKxQuZb':
source/app.d:(.text._D15taggedalgebraic__T15TaggedAlgebraicTS4stdx4data4json5value9JSONValue12PayloadUnionZQCn11__xopEqualsFKxSQEb__TQDnTQCzZQDvKxQuZb[_D15taggedalgebraic__T15TaggedAlgebraicTS4stdx4data4json5value9JSONValue12PayloadUnionZQCn11__xopEqualsFKxSQEb__TQDnTQCzZQDvKxQuZb]+0x20): undefined reference to `_D15taggedalgebraic__T15TaggedAlgebraicTS4stdx4data4json5value9JSONValue12PayloadUnionZQCn__T8opEqualsTxSQDz__TQDlTQCxZQDtTxQuZQBiMxFKxQBfZb'
collect2: error: ld returned 1 exit status
Error: linker exited with status 1
dmd failed with exit code 1.

By the way:

FeepingCreature commented 4 years ago

I ran into the same issue. The relevant DMD bug is https://issues.dlang.org/show_bug.cgi?id=21235 and somewhat https://issues.dlang.org/show_bug.cgi?id=19091 - or rather, as I understand it, 19091 turns the compiler bug of 21235 into a linker error.

I hacked around it locally by copying std.data.json and taggedalgebraic into my library and making opEquals nontemplated, thus sidestepping the issue. But that can't be upstreamed in taggedalgebraic because I had to disable a bunch of unittests to make it work.