www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - modules with the same name in different packages

reply Mahe <maheweb web.de> writes:
Hi, 
I have a problem with 2 modules with the same name in different packages. It
seems that one module obj overwrites the other.
Is there a possibility to solve that (except renaming the packages, because
this would make packages useless)

Here some example source code. I compile it with:
dmd  main.d -odbin 
And get the error
OPTLINK (R) for Win32  Release 8.00.1
Copyright (C) Digital Mars 1989-2004  All rights reserved.
bin\main.obj(main) 
 Error 42: Symbol Undefined _D4pack3mod4Mod27__ClassZ
--- errorlevel 1
#########################################
module pack.mod;

import tango.io.Console;

class Mod2
{
	public void foo()
	{
		Cout( "pack.mod" ).newline;
	}
}
##########################################
module mod;


import tango.io.Console;

class Mod1
{
	public void foo()
	{
		Cout( "mod" ).newline;
	}
}
##########################################
 module main;

import tango.io.Console;

import mod;
import pack.mod;

void main()
{
	Mod1 m1 = new Mod1;
	Mod2 m2 = new Mod2;
	
	m1.foo;
	m2.foo;
	
    Cout ("Hello" ).newline;
}

	
Sep 29 2007
next sibling parent Alexander Panek <alexander.panek brainsware.org> writes:
On Sat, 29 Sep 2007 15:58:17 -0400
Mahe <maheweb web.de> wrote:
 dmd  main.d -odbin 
 And get the error
 OPTLINK (R) for Win32  Release 8.00.1
 Copyright (C) Digital Mars 1989-2004  All rights reserved.
 bin\main.obj(main) 
  Error 42: Symbol Undefined _D4pack3mod4Mod27__ClassZ
 --- errorlevel 1

It rather seems like you're /missing/ a symbol in your object. Apart from that, you don't compile the other packages, so it's kind of natural that the symbols are missing. -- Alexander Panek <alexander.panek brainsware.org>
Sep 29 2007
prev sibling parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 9/29/07, Mahe <maheweb web.de> wrote:
 Hi,
 I have a problem with 2 modules with the same name in different packages. It
seems that one module obj overwrites the other.

The trick is not to build all the object files in the same directory. :-)
Sep 29 2007
parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
Janice Caron wrote:
 On 9/29/07, Mahe <maheweb web.de> wrote:
 Hi,
 I have a problem with 2 modules with the same name in different packages. It
seems that one module obj overwrites the other.

The trick is not to build all the object files in the same directory. :-)

Or use dsss/rebuild which automatically gives the objs unique names based on their directory names. --bb
Sep 29 2007
parent Mahe <maheweb web.de> writes:
Bill Baxter Wrote:
 Or use dsss/rebuild which automatically gives the objs unique names 
 based on their directory names.
 
 --bb

 
 Or use dsss/rebuild which automatically gives the objs unique names 
 based on their directory names.
 
 --bb

Oh, thanks! I had also tried building with rebuild. But with the parameter “-od…” it didn’t work. I now tried without it and it works! After a closer look into the help of rebuild I found the parameter “-oq…”. Now it also works with an object files directory :-)
Sep 30 2007