can't compile a simple class

John Colvin john.loughran.colvin at gmail.com
Sat Mar 23 14:54:00 PDT 2013


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.


More information about the Digitalmars-d mailing list