www.digitalmars.com         C & C++   DMDScript  

D - Module Woes

reply Deja Augustine <Deja_member pathlink.com> writes:
I'm having a problem.  

I have the following files:

========mtest.d===========
module mtest;

int c;

static this()
{
c = 3;
}

int add(int x, int y)
{
return x + y;
}

void compile(char[] pattern, char[] attributes)
{

}

===========add.d============
import mtest;

int main()
{
int a = add(1, 2);
return 0;
}


when I compile it, I get this in the console:
D:\dmd\test>..\bin\dmd add.d
D:\dmd\bin\..\..\dm\bin\link.exe add,,,user32+kernel32/noi;
OPTLINK (R) for Win32  Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved

add.obj(add)
Error 42: Symbol Undefined _D5mtest3addFiiZi
--- errorlevel 1

it doesn't matter what symbols I'm using, it always comes up as Error 42: Symbol
Undefined if it's from a module.

Does anyone have any insights?

Thanks
-Deja
Apr 08 2004
parent reply Stephan Wienczny <wienczny web.de> writes:
 when I compile it, I get this in the console:
 D:\dmd\test>..\bin\dmd add.d

Your problem is here ^^^^^^^
 D:\dmd\bin\..\..\dm\bin\link.exe add,,,user32+kernel32/noi;

or here ^^^^
 OPTLINK (R) for Win32  Release 7.50B1
 Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved
 
 add.obj(add)
 Error 42: Symbol Undefined _D5mtest3addFiiZi
 --- errorlevel 1
 
 it doesn't matter what symbols I'm using, it always comes up as Error 42:
Symbol
 Undefined if it's from a module.
 
 Does anyone have any insights?
 

You _don't_ compile the mtest module! If you want to compile your project just run "dmd add.d mtest.d" The mtest module is only virtually imported. Unlike in C or C++ includes the compiler does not compile code in imported modules. You have to compile and link imported modules, too. Stephan
Apr 08 2004
parent reply Deja Augustine <Deja_member pathlink.com> writes:
In article <c548k4$2534$1 digitaldaemon.com>, Stephan Wienczny says...
 when I compile it, I get this in the console:
 D:\dmd\test>..\bin\dmd add.d

Your problem is here ^^^^^^^
 D:\dmd\bin\..\..\dm\bin\link.exe add,,,user32+kernel32/noi;

or here ^^^^
 OPTLINK (R) for Win32  Release 7.50B1
 Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved
 
 add.obj(add)
 Error 42: Symbol Undefined _D5mtest3addFiiZi
 --- errorlevel 1
 
 it doesn't matter what symbols I'm using, it always comes up as Error 42:
Symbol
 Undefined if it's from a module.
 
 Does anyone have any insights?
 

You _don't_ compile the mtest module! If you want to compile your project just run "dmd add.d mtest.d" The mtest module is only virtually imported. Unlike in C or C++ includes the compiler does not compile code in imported modules. You have to compile and link imported modules, too. Stephan

D'OH!! Thanks ;)
Apr 08 2004
parent "C. Sauls" <ibisbasenji yahoo.com> writes:
Hey don't feel bad, I came to D after a few years of working almost
entirely with Java... I /still/ forget this sometimes.  One of the
reasons I started using a build utility... its hard to mess up a
commandline that I don't even have to type.  :)

-C. Sauls
-Invironz

Deja Augustine wrote:
 In article <c548k4$2534$1 digitaldaemon.com>, Stephan Wienczny says...
 
when I compile it, I get this in the console:
D:\dmd\test>..\bin\dmd add.d

Your problem is here ^^^^^^^
D:\dmd\bin\..\..\dm\bin\link.exe add,,,user32+kernel32/noi;

or here ^^^^
OPTLINK (R) for Win32  Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved

add.obj(add)
Error 42: Symbol Undefined _D5mtest3addFiiZi
--- errorlevel 1

it doesn't matter what symbols I'm using, it always comes up as Error 42: Symbol
Undefined if it's from a module.

Does anyone have any insights?

You _don't_ compile the mtest module! If you want to compile your project just run "dmd add.d mtest.d" The mtest module is only virtually imported. Unlike in C or C++ includes the compiler does not compile code in imported modules. You have to compile and link imported modules, too. Stephan

D'OH!! Thanks ;)

Apr 08 2004