Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
March 23, 2013 can't compile a simple class | ||||
---|---|---|---|---|
| ||||
Sorry for the question. I am a n00b to D. I tried to compile the following code from Alexandrescu's book: import std.stdio; class A { int x = 42; } unittest { auto a1 = new A; assert (a1.x == 42); auto a2 = a1; a2.x = 100; assert (a1.x == 100); } at the command line: /d$ dmd c.d /usr/lib/i386-linux-gnu/libphobos2.a(dmain2_473_1a5.o): In function `main': src/rt/dmain2.d:(.text.main+0x4): undefined reference to `_Dmain' /usr/lib/i386-linux-gnu/libphobos2.a(deh2_453_525.o): In function `_D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable': src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable+0x4): undefined reference to `_deh_beg' src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable+0xc): undefined reference to `_deh_beg' src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable+0x12): undefined reference to `_deh_end' ... plus much more encrypted Klingon. Help? |
March 23, 2013 Re: can't compile a simple class | ||||
---|---|---|---|---|
| ||||
Posted in reply to Patrick Tinkham | On Saturday, 23 March 2013 at 21:04:25 UTC, Patrick Tinkham wrote:
> Sorry for the question. I am a n00b to D. I tried to compile the following code from Alexandrescu's book:
>
> import std.stdio;
> class A {
> int x = 42;
> }
>
> unittest {
> auto a1 = new A;
> assert (a1.x == 42);
> auto a2 = a1;
> a2.x = 100;
> assert (a1.x == 100);
> }
>
> at the command line:
>
> /d$ dmd c.d
> /usr/lib/i386-linux-gnu/libphobos2.a(dmain2_473_1a5.o): In function `main':
> src/rt/dmain2.d:(.text.main+0x4): undefined reference to `_Dmain'
> /usr/lib/i386-linux-gnu/libphobos2.a(deh2_453_525.o): In function `_D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable':
> src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable+0x4): undefined reference to `_deh_beg'
> src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable+0xc): undefined reference to `_deh_beg'
> src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable+0x12): undefined reference to `_deh_end'
>
> ...
>
> plus much more encrypted Klingon.
>
> Help?
You need a main function:
import std.stdio;
class A {
int x = 42;
}
unittest {
auto a1 = new A;
assert (a1.x == 42);
auto a2 = a1;
a2.x = 100;
assert (a1.x == 100);
}
void main() { }
|
March 23, 2013 Re: can't compile a simple class | ||||
---|---|---|---|---|
| ||||
Posted in reply to Patrick Tinkham | On Saturday, March 23, 2013 22:04:23 Patrick Tinkham wrote:
> Sorry for the question. I am a n00b to D. I tried to compile the following code from Alexandrescu's book:
>
> import std.stdio;
> class A {
> int x = 42;
> }
>
> unittest {
> auto a1 = new A;
> assert (a1.x == 42);
> auto a2 = a1;
> a2.x = 100;
> assert (a1.x == 100);
> }
>
> at the command line:
>
> /d$ dmd c.d
> /usr/lib/i386-linux-gnu/libphobos2.a(dmain2_473_1a5.o): In
> function `main':
> src/rt/dmain2.d:(.text.main+0x4): undefined reference to `_Dmain'
> /usr/lib/i386-linux-gnu/libphobos2.a(deh2_453_525.o): In function
> `_D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable':
> src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable+0x4):
> undefined reference to `_deh_beg'
> src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable+0xc):
> undefined reference to `_deh_beg'
> src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable+0x12)
> : undefined reference to `_deh_end'
>
> ...
>
> plus much more encrypted Klingon.
>
> Help?
You have to have a main function. Either add one, or use rdmd --main to compile (instead of dmd) so that a stub main is added for you. In either case, you need -unittest to enable the unit tests.
Also, questions on learning D should go to the D.Learn newsgroup, whereas this is the D newsgroup, which is for general discussion on the language itself.
- Jonathan M Davis
|
March 23, 2013 Re: can't compile a simple class | ||||
---|---|---|---|---|
| ||||
Posted in reply to Patrick Tinkham | On Saturday, 23 March 2013 at 21:04:25 UTC, Patrick Tinkham wrote: > /d$ dmd c.d > /usr/lib/i386-linux-gnu/libphobos2.a(dmain2_473_1a5.o): In function `main': > src/rt/dmain2.d:(.text.main+0x4): undefined reference to `_Dmain' ... > plus much more encrypted Klingon. > > Help? Fixed: http://dpaste.1azy.net/282d8d3f |
March 23, 2013 Re: can't compile a simple class | ||||
---|---|---|---|---|
| ||||
Posted in reply to Namespace | On Saturday, 23 March 2013 at 21:08:39 UTC, Namespace wrote:
> On Saturday, 23 March 2013 at 21:04:25 UTC, Patrick Tinkham wrote:
>> Sorry for the question. I am a n00b to D. I tried to compile the following code from Alexandrescu's book:
>>
>> import std.stdio;
>> class A {
>> int x = 42;
>> }
>>
>> unittest {
>> auto a1 = new A;
>> assert (a1.x == 42);
>> auto a2 = a1;
>> a2.x = 100;
>> assert (a1.x == 100);
>> }
>>
>> at the command line:
>>
>> /d$ dmd c.d
>> /usr/lib/i386-linux-gnu/libphobos2.a(dmain2_473_1a5.o): In function `main':
>> src/rt/dmain2.d:(.text.main+0x4): undefined reference to `_Dmain'
>> /usr/lib/i386-linux-gnu/libphobos2.a(deh2_453_525.o): In function `_D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable':
>> src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable+0x4): undefined reference to `_deh_beg'
>> src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable+0xc): undefined reference to `_deh_beg'
>> src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable+0x12): undefined reference to `_deh_end'
>>
>> ...
>>
>> plus much more encrypted Klingon.
>>
>> Help?
>
> You need a main function:
>
> import std.stdio;
> class A {
> int x = 42;
> }
>
> unittest {
> auto a1 = new A;
> assert (a1.x == 42);
> auto a2 = a1;
> a2.x = 100;
> assert (a1.x == 100);
> }
>
> void main() { }
Thank you!!! (I guess I'm just accustomed to stand-alone classes in Java...)
|
March 23, 2013 Re: can't compile a simple class | ||||
---|---|---|---|---|
| ||||
Posted in reply to Patrick Tinkham | On Saturday, 23 March 2013 at 21:12:25 UTC, Patrick Tinkham wrote:
> On Saturday, 23 March 2013 at 21:08:39 UTC, Namespace wrote:
>> On Saturday, 23 March 2013 at 21:04:25 UTC, Patrick Tinkham wrote:
>>> Sorry for the question. I am a n00b to D. I tried to compile the following code from Alexandrescu's book:
>>>
>>> import std.stdio;
>>> class A {
>>> int x = 42;
>>> }
>>>
>>> unittest {
>>> auto a1 = new A;
>>> assert (a1.x == 42);
>>> auto a2 = a1;
>>> a2.x = 100;
>>> assert (a1.x == 100);
>>> }
>>>
>>> at the command line:j
>>>
>>> /d$ dmd c.d
>>> /usr/lib/i386-linux-gnu/libphobos2.a(dmain2_473_1a5.o): In function `main':
>>> src/rt/dmain2.d:(.text.main+0x4): undefined reference to `_Dmain'
>>> /usr/lib/i386-linux-gnu/libphobos2.a(deh2_453_525.o): In function `_D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable':
>>> src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable+0x4): undefined reference to `_deh_beg'
>>> src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable+0xc): undefined reference to `_deh_beg'
>>> src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh29FuncTable+0x12): undefined reference to `_deh_end'
>>>
>>> ...
>>>
>>> plus much more encrypted Klingon.
>>>
>>> Help?
>>
>> You need a main function:
>>
>> import std.stdio;
>> class A {
>> int x = 42;
>> }
>>
>> unittest {
>> auto a1 = new A;
>> assert (a1.x == 42);
>> auto a2 = a1;
>> a2.x = 100;
>> assert (a1.x == 100);
>> }
>>
>> void main() { }
>
> Thank you!!! (I guess I'm just accustomed to stand-alone classes in Java...)
dmd has a flag - - main that auto generates a blank main function to prevent linker errors.
|
March 24, 2013 Re: can't compile a simple class | ||||
---|---|---|---|---|
| ||||
Posted in reply to John Colvin | "John Colvin" <john.loughran.colvin@gmail.com> wrote in message news:czgwwpslprqslewmsjnq@forum.dlang.org... > > dmd has a flag - - main that auto generates a blank main function to prevent linker errors. I don't think this is in the released version yet. |
March 24, 2013 Re: can't compile a simple class | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Murphy | On Sunday, March 24, 2013 16:59:51 Daniel Murphy wrote:
> "John Colvin" <john.loughran.colvin@gmail.com> wrote in message news:czgwwpslprqslewmsjnq@forum.dlang.org...
>
> > dmd has a flag - - main that auto generates a blank main function to prevent linker errors.
>
> I don't think this is in the released version yet.
It _has_ been in rdmd for quite some time though.
- Jonathan M Davis
|
Copyright © 1999-2021 by the D Language Foundation