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









James Pelcis <jpelcis gmail.com> 