digitalmars.D.learn - Error 42: Symbol Undefined
- jicman (36/36) May 11 2006 Ok, so I have been using build and I have been working perfectly fine, u...
- Jarrett Billingsley (4/10) May 11 2006 Well, you're not linking this file in anywhere, as far as I can see. Yo...
- jicman (13/23) May 11 2006 You mean that I have to do,
- James Pelcis (8/10) May 11 2006 If you use -I, you don't actually tell the compiler to import anything.
- Jarrett Billingsley (6/15) May 12 2006 Or, just do this:
- Derek Parnell (22/26) May 11 2006 All this does is compile the file 'test.d', it does not compile nor link
Ok, so I have been using build and I have been working perfectly fine, until today, when I want to use DDoc and tried using dmd -I.. -D test.d I get, 11:50:42.85>dmd -I.. test.d .\jic\libs\MyLibTest.d(3): no identifier for declarator PrintHello .\jic\libs\MyLibTest.d(3): semicolon expected, not '{' .\jic\libs\MyLibTest.d(3): Declaration expected, not '{' .\jic\libs\MyLibTest.d(5): unrecognized declaration 11:55:02.08>dmd -I.. test.d c:\dmd\bin\..\..\dm\bin\link.exe test,,,user32+kernel32/noi; OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved test.obj(test) Error 42: Symbol Undefined _D3jic4libs9MyLibTest10PrintHelloFZAa --- errorlevel 1 source code is simple, 11:55:28.87>type test.d private import jic.libs.MyLibTest; int main(char[][] args) { PrintHello(); return 1; } and 11:58:08.13>type ..\jic\libs\MyLibTest.d module jic.libs.MyLibTest; char[] PrintHello() { printf("Hello\n"); } I tried to see what options I could use, but somehow, the -I option for dmd is not finding ..\jic\libs\. Any ideas? thanks. josé
May 11 2006
"jicman" <jicman_member pathlink.com> wrote in message news:e3vn8q$1nnb$1 digitaldaemon.com...11:58:08.13>type ..\jic\libs\MyLibTest.d module jic.libs.MyLibTest; char[] PrintHello() { printf("Hello\n"); }Well, you're not linking this file in anywhere, as far as I can see. You'll have to put either its source file or its object file on the command line.
May 11 2006
Jarrett Billingsley says..."jicman" <jicman_member pathlink.com> wrote in message news:e3vn8q$1nnb$1 digitaldaemon.com...You mean that I have to do, dmd -D -I.. test.d ..\jic\libs\MyLibTest.d Is this correct? So, if I have 10 library files (..\jic\libs\MyLibTest0-9.d) I have to add them all to the command? I.e. dmd -D -I.. test.d ..\jic\libs\MyLibTest0.d ..\jic\libs\MyLibTest1.d .\jic\libs\MyLibTest2.d ..\jic\libs\MyLibTest3.d ..\jic\libs\MyLibTest4.d .\jic\libs\MyLibTest5.d ..\jic\libs\MyLibTes6.d ..\jic\libs\MyLibTest7.d .\jic\libs\MyLibTest8.d ..\jic\libs\MyLibTest9.d If so, what does the -I option does then? Sorry to be so unwise at this, but build does all of that for me. :-) And I have been using build since the Good Lord brought me to D. thanks for the help11:58:08.13>type ..\jic\libs\MyLibTest.d module jic.libs.MyLibTest; char[] PrintHello() { printf("Hello\n"); }Well, you're not linking this file in anywhere, as far as I can see. You'll have to put either its source file or its object file on the command line.
May 11 2006
If you use -I, you don't actually tell the compiler to import anything. All you do is give it another directory from which it should look for imports. For example, you can use -I"C:\verylongannoyingpathofevil\derelict\" so that you don't need to write it out for ever derelict module you use. btw, I think Derek would love to hear that statement. He's worked hard to make it easier to use D. jicman wrote:If so, what does the -I option does then? Sorry to be so unwise at this, but build does all of that for me. :-)
May 11 2006
"jicman" <jicman_member pathlink.com> wrote in message news:e40agm$2l8q$1 digitaldaemon.com...You mean that I have to do, dmd -D -I.. test.d ..\jic\libs\MyLibTest.d Is this correct? So, if I have 10 library files (..\jic\libs\MyLibTest0-9.d) I have to add them all to the command? I.e. dmd -D -I.. test.d ..\jic\libs\MyLibTest0.d ..\jic\libs\MyLibTest1.d .\jic\libs\MyLibTest2.d ..\jic\libs\MyLibTest3.d ..\jic\libs\MyLibTest4.d .\jic\libs\MyLibTest5.d ..\jic\libs\MyLibTes6.d ..\jic\libs\MyLibTest7.d .\jic\libs\MyLibTest8.d ..\jic\libs\MyLibTest9.dOr, just do this: dmd -D -I"..\jib\libs\" test.d MyLibTest.d MyLibTest0.d MyLibTest1.d ... Or, if you've already compiled those libs to .obj files, dmd -D -I"..\jib\libs\" test.d MyLibTest.obj MyLibTest0.obj ...
May 12 2006
On Thu, 11 May 2006 16:03:38 +0000 (UTC), jicman wrote:Ok, so I have been using build and I have been working perfectly fine, until today, when I want to use DDoc and tried using dmd -I.. -D test.dAll this does is compile the file 'test.d', it does not compile nor link your library module. Try this instead ... dmd -I.. test.d ..\jic\libs\MyLibTest.d The dmd compiler is quite brain-dead when it comes to finding files. You have to tell it everything. Another way is to create a 'response file' for dmd. ---------- test.rsp --------- -I.. test.d ..\jic\libs\MyLibTest.d ----------------------------- Then use ... dmd test.rsp Alternatively, just use 'Build' ;-) -- Derek (skype: derek.j.parnell) Melbourne, Australia "Down with mediocracy!" 12/05/2006 9:45:27 AM
May 11 2006