www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Little annoyance - reposted to the right group

reply "Carlos Smith" <carlos-smith sympatico.ca> writes:
Hi !,

Have a file named: y.tab.d (a valid D program). DMD
cannot compile/link it. The linker complains about y.tab
not found. Must rename it ytab.d (only one suffix)
to make it Ok.

While it's simple to rename it, i think the compiler
should pass y.tab.obj to the linker. Or will the
linker will be unable to cope with it ?

Besides, that file name is generated by another program,
and it is good to keep that name.

=== complete error log =================================

==> dmd y.tab.d
 d:\dmd\bin\..\..\dm\bin\link.exe
y.tab,,,user32+kernel32/noi;
 OPTLINK (R) for Win32  Release 7.50B1
 Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved

 y.tab
 Error 2: File Not Found y.tab
 --- errorlevel 1

The link do not find y.tab. It should look for y.tab.obj.
So instead i do:

==> dmd -c y.tab.d
==> \dm\bin\link.exe y.tab.obj,,,user32+kernel32/noi;

 Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved

 phobos.lib
 Warning 2: File Not Found phobos.lib
 OPTLINK : Warning 23: No Stack
 y.tab.obj(y.tab)
 Error 42: Symbol Undefined _main
 y.tab.obj(y.tab)
 Error 42: Symbol Undefined __acrtused_con
 y.tab.obj(y.tab)
 Error 42: Symbol Undefined _D16TypeInfo_Pointer6__vtblZ
 y.tab.obj(y.tab)
 Error 42: Symbol Undefined _D10TypeInfo_a6__initZ
 y.tab.obj(y.tab)
 Error 42: Symbol Undefined _D11TypeInfo_Aa6__initZ
 y.tab.obj(y.tab)
 Error 42: Symbol Undefined __nullext
 y.tab.obj(y.tab)
 Error 42: Symbol Undefined _D3std5stdio12__ModuleInfoZ
 OPTLINK : Warning 134: No Start Address

If i rename y.tab.d ytab.d, the file compiles and
links fine ( DMD 1.015 ).
Jun 22 2007
parent Sean Kelly <sean f4.ca> writes:
Carlos Smith wrote:
 Hi !,
 
 Have a file named: y.tab.d (a valid D program). DMD
 cannot compile/link it. The linker complains about y.tab
 not found. Must rename it ytab.d (only one suffix)
 to make it Ok.
Module names cannot have dots in them because dots represent path separators to the compiler. Sean
Jun 24 2007