March 12, 2005 Re: Newbie questions: I love them...! Do you? | ||||
---|---|---|---|---|
| ||||
Posted in reply to jicman | 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 Re: Newbie questions: I love them...! Do you? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Derek Parnell | 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. |
Copyright © 1999-2021 by the D Language Foundation