March 12, 2005
On Sat, 12 Mar 2005 12:56:22 +0000 (UTC), jicman wrote:

> Derek Parnell says...
>>
>>On Sat, 12 Mar 2005 01:46:51 +0000 (UTC), jicman wrote:
>>
>>> clayasaurus says...
>>>>>------------- subroutine.d -------------------
>>>>> module subroutine; // module declaration here
>>>>> 
>>>>> import std.string; // import here
>>>>> 
>>>>> dance()
>>>>> {
>>>>>    rock();
>>>>> }
>>>>> 
>>>>> rock()
>>>>> {
>>>>>    std.string.WhatEver(); // or just call WhatEver();
>>>>> }
>>>>> 
>>>>> ------------- main.d -----------------------
>>>>> import subroutine; // module name
>>>>> 
>>>>> int main()
>>>>> {
>>>>>    dance(); // or you could use subroutine.dance();
>>>>>    return 0;
>>>>> }
>>> 
>>> So I have this in my directory:
>>> 
>>> 03/11/2005  08:35 PM               236 jic.d
>>> 03/11/2005  08:35 PM               145 month.d
>>> 
>>> File jic.d contains:
>>> 
>>> module jic;
>>> private import std.string;
>>> char[] CallMe(char[] mon)
>>> {
>>> char[] mm = "CallMe " ~ mon;
>>> return(mm);
>>> }
>>> 
>>> char[] CallMeToo(char[] mon)
>>> {
>>> char[] mm = "CallMeToo " ~ mon;
>>> return(mm);
>>> }
>>> 
>>> while file month.d contains:
>>> 
>>> import std.stdio;
>>> import jic;
>>> void main (char[][] args)
>>> {
>>> char[] d;
>>> writefln(jic.CallMe("Jan"));
>>> writefln(jic.CallMeToo("Feb"));
>>> }
>>> 
>>> when I compile month.d, I get:
>>> 
>>> 20:49:38.41>dmd month.d
>>> c:\dmd\bin\..\..\dm\bin\link.exe month,,,user32+kernel32/noi;
>>> OPTLINK (R) for Win32  Release 7.50B1
>>> Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved
>>> 
>>> month.obj(month)
>>> Error 42: Symbol Undefined _D3jic6CallMeFAaZAa
>>> month.obj(month)
>>> Error 42: Symbol Undefined _D3jic9CallMeTooFAaZAa
>>> --- errorlevel 2
>>> 
>>> Huh?
>>
>>Either run
>>
>>  dmd month.d jic.d
> 
> Derek, this works... but this
> 
> 
>>  build month
> 
> with your 1.12 build for windows does not.  I get,
> 
> 8:00:20.96>build month
> c:\dmd\bin\..\..\dm\bin\link.exe month,month.exe,,user32+kernel32/noi;
> OPTLINK (R) for Win32  Release 7.50B1
> Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved
> 
> month.obj(month)
> Error 42: Symbol Undefined _D3jic6CallMeFAaZAa
> month.obj(month)
> Error 42: Symbol Undefined _D3jic9CallMeTooFAaZAa
> --- errorlevel 2

Thanks for the feedback. This is what I tested (before writing my earlier
note )

In the folder C:\TEMP I have two files - jic.d and month.d

Here is a shot of my screen output ...
-----------------------------
C:\TEMP>type jic.d
module jic;
private import std.string;

char[] CallMe(char[] mon)
{
char[] mm = "CallMe " ~ mon;
return(mm);
}

char[] CallMeToo(char[] mon)
{
char[] mm = "CallMeToo " ~ mon;
return(mm);
}


C:\TEMP>type month.d

import std.stdio;
import jic;
void main (char[][] args)
{
char[] d;
writefln(jic.CallMe("Jan"));
writefln(jic.CallMeToo("Feb"));
}

C:\TEMP>build month
f:\dmd\bin\..\..\dm\bin\link.exe month+jic,month.exe,,user32+kernel32/noi;

C:\TEMP>month
CallMe Jan
CallMeToo Feb

C:\TEMP>

----------------------------
So all I can assume at this point is that we are testing with different source code files.


>>The reason is that "dmd month.d" will compile 'month.d' and then link 'month.obj'. You also need to compile 'jic'd' and link that in too.
>>
>>My 'build' utility will organize these dependencies for you.
> 
> Well, it's not doing it.  Also, I think I found a bug on it.  But, explain to me why it's not working and I'll tell you the bug. ;-)

I can't explain why it is not working at your site but is working at mine.

Oh, it has a few mistakes remaining. I could tell you a few too actually.

I'm planning to post an update tomorrow that corrects three that I know of, so I'd like to know if you have found another of my mistakes.

-- 
Derek Parnell
Melbourne, Australia
13/03/2005 12:26:55 AM
March 12, 2005
Derek Parnell says...
>
>On Sat, 12 Mar 2005 12:56:22 +0000 (UTC), jicman wrote:
>
>> Derek Parnell says...
>>>
>>>On Sat, 12 Mar 2005 01:46:51 +0000 (UTC), jicman wrote:
>>>
>>>> clayasaurus says...
>>>>>>------------- subroutine.d -------------------
>>>>>> module subroutine; // module declaration here
>>>>>> 
>>>>>> import std.string; // import here
>>>>>> 
>>>>>> dance()
>>>>>> {
>>>>>>    rock();
>>>>>> }
>>>>>> 
>>>>>> rock()
>>>>>> {
>>>>>>    std.string.WhatEver(); // or just call WhatEver();
>>>>>> }
>>>>>> 
>>>>>> ------------- main.d -----------------------
>>>>>> import subroutine; // module name
>>>>>> 
>>>>>> int main()
>>>>>> {
>>>>>>    dance(); // or you could use subroutine.dance();
>>>>>>    return 0;
>>>>>> }
>>>> 
>>>> So I have this in my directory:
>>>> 
>>>> 03/11/2005  08:35 PM               236 jic.d
>>>> 03/11/2005  08:35 PM               145 month.d
>>>> 
>>>> File jic.d contains:
>>>> 
>>>> module jic;
>>>> private import std.string;
>>>> char[] CallMe(char[] mon)
>>>> {
>>>> char[] mm = "CallMe " ~ mon;
>>>> return(mm);
>>>> }
>>>> 
>>>> char[] CallMeToo(char[] mon)
>>>> {
>>>> char[] mm = "CallMeToo " ~ mon;
>>>> return(mm);
>>>> }
>>>> 
>>>> while file month.d contains:
>>>> 
>>>> import std.stdio;
>>>> import jic;
>>>> void main (char[][] args)
>>>> {
>>>> char[] d;
>>>> writefln(jic.CallMe("Jan"));
>>>> writefln(jic.CallMeToo("Feb"));
>>>> }
>>>> 
>>>> when I compile month.d, I get:
>>>> 
>>>> 20:49:38.41>dmd month.d
>>>> c:\dmd\bin\..\..\dm\bin\link.exe month,,,user32+kernel32/noi;
>>>> OPTLINK (R) for Win32  Release 7.50B1
>>>> Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved
>>>> 
>>>> month.obj(month)
>>>> Error 42: Symbol Undefined _D3jic6CallMeFAaZAa
>>>> month.obj(month)
>>>> Error 42: Symbol Undefined _D3jic9CallMeTooFAaZAa
>>>> --- errorlevel 2
>>>> 
>>>> Huh?
>>>
>>>Either run
>>>
>>>  dmd month.d jic.d
>> 
>> Derek, this works... but this
>> 
>> 
>>>  build month
>> 
>> with your 1.12 build for windows does not.  I get,
>> 
>> 8:00:20.96>build month
>> c:\dmd\bin\..\..\dm\bin\link.exe month,month.exe,,user32+kernel32/noi;
>> OPTLINK (R) for Win32  Release 7.50B1
>> Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved
>> 
>> month.obj(month)
>> Error 42: Symbol Undefined _D3jic6CallMeFAaZAa
>> month.obj(month)
>> Error 42: Symbol Undefined _D3jic9CallMeTooFAaZAa
>> --- errorlevel 2
>
>Thanks for the feedback. This is what I tested (before writing my earlier
>note )
>
>In the folder C:\TEMP I have two files - jic.d and month.d
>
>Here is a shot of my screen output ...
>-----------------------------
>C:\TEMP>type jic.d
>module jic;
>private import std.string;
>
>char[] CallMe(char[] mon)
>{
>char[] mm = "CallMe " ~ mon;
>return(mm);
>}
>
>char[] CallMeToo(char[] mon)
>{
>char[] mm = "CallMeToo " ~ mon;
>return(mm);
>}
>
>
>C:\TEMP>type month.d
>
>import std.stdio;
>import jic;
>void main (char[][] args)
>{
>char[] d;
>writefln(jic.CallMe("Jan"));
>writefln(jic.CallMeToo("Feb"));
>}
>
>C:\TEMP>build month
>f:\dmd\bin\..\..\dm\bin\link.exe month+jic,month.exe,,user32+kernel32/noi;
>
>C:\TEMP>month
>CallMe Jan
>CallMeToo Feb
>
>C:\TEMP>
>
>----------------------------
>So all I can assume at this point is that we are testing with different source code files.

No, it's the same source code.  Do I have to install it?  What I did was that I renamed build_win_1.12.exe to build.exe.  Then I moved it to c:dmd\bin and typed build

8:50:02.71>build
Path and Version : c:\dmd\bin\build.exe v1.12(387)

Usage: build sourcefile [options objectfiles libraries]
sourcefile D source file
-v         Verbose (passed through to D)
-V         Verbose (NOT passed through)
-DCPATH<path> <path> is where the compiler has been installed.
Only needed if the compiler is not in the system's
PATH list. Used if you are testing an alternate
version of the compiler.
-CFPATH<path> <path> is where the D config file has been installed.
-full      Causes all source files, except ignored modules,
to be compiled.
-link      Forces the linker to be called instead of the librarian.
(Only needed if the source files do not contain
main/WinMain)
-nolink    Ensures that the linker is not called.
(Only needed if main/WinMain is found in the source
files and you do NOT want an executable created.)
-lib       Forces the object files to be placed in a library.
(Only needed if main/WinMain is found in the source
files AND you want it in a library instead of
an executable.)
-nolib     Ensures that the object files are not used to form
a library.
(Only needed if main/WinMain is not found in the source
files and you do NOT want a library.
-allobj    Ensures that all object files are added to a
library.
(Normally only those in the same directory are added.)
-nounittest Ensures that the compiler does not include any
unit tests in the executable.)
-cleanup   Ensures that all object files created during the run
are removed at the end of the run, plus other work files.
-gui[:x.y] Forces a GUI application to be created. The optional
:x.y can be used to build an application for a
specific version of Windows. eg. -gui:4.0
(Only needed if WinMain is not found in the source files
or if you wish to override the default Windows version)
-test      Does everything as normal except it displays the commands
instead of running them.
-R<y|n>    Indicates whether to use a response file or command line
arguments with the compiler tools.
-Ry will cause a response to be used.
-Rn will cause command line arguments to be used.
-R will reverse the current usage.
** The default is to use a response file
-X<module> Modules to ignore (eg. -Xmylib)
-M<module> Modules to notice (eg. -Mphobos)
-T~<targetname~> The name of the target file to create. Normally
the target name istaken from the first or only name
of the command line.
-info      Displays the version and path of the Build application
[...]      All other options, objectfiles and libraries are
passed to the compiler
*Note, you can specify all or any command line value in a
response file. Each value appears in its own line in the
response file and you reference this file by prefixing
its name with an '@' symbol on the command line.
Example:  build @final
where a file called 'final.brf' contains the command
line values (including other response file references)
If the response file reference is just a single '@' then
build looks for a file called 'build.brf'

By the way, great utility, though it's not working for me. :-(.  Ok, here is the problem.  Say you tried to compile the same month.d with

dmd month.d

which is not going to work, but it's going to create an executable (which does not work) anyway, and then you type

build month.d

build replies with,

8:56:36.25>build month.d
Files are up to date, no compilation required.

Which is not really true, since month.exe gives you an Windows error.

What version of link are you running?  Here is mine:

9:01:28.78>link
OPTLINK (R) for Win32  Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved

OPTLINK : Warning 23: No Stack
OPTLINK : Warning 134: No Start Address

>I can't explain why it is not working at your site but is working at mine.
>
>Oh, it has a few mistakes remaining. I could tell you a few too actually.
>
>I'm planning to post an update tomorrow that corrects three that I know of, so I'd like to know if you have found another of my mistakes.

thanks.


1 2
Next ›   Last »