Hello,<div><br></div><div>I am trying to compile code which is composed of two modules (in the same directory):</div><div><br></div><div>main.d </div><div>foo.d</div><div><br></div><div>foo.d just declares a class Foo which has a string variable "bar" which i set to "hello" and main.d just prints bar's value to the console:</div>
<div><br></div><div>// --------- main.d -----------</div><div>import std.stdio, foo;</div><div><br></div><div>void main() {</div><div>    Foo f = new Foo;</div><div>    writeln(f.bar);</div><div>}</div><div><br></div><div>
When i attempt to compile main.d via: </div><div>$dmd main.d </div><div>I get undefined symbol errors. </div><div><br></div><div>But when I run: </div><div>$rdmd main.d</div><div>it works as expected.</div><div><br></div>
<div>The only way I could get main.d to compile with just dmd was to compile foo as a lib first and then compile main.d and passing the foo.a file as an argument:</div><div>$dmd -lib foo.d</div><div>$dmd main.d foo.a</div>
<div><br></div><div>Is this normal?  </div><div>I got the impression from TDPL (Alexandrescu) that the dmd compiler would automatically search the root directory, find foo.d, work its magic, and create all the symbols that were defined in foo.d for main.d to compile...</div>
<div><br></div><div>Thanks,</div><div>Josh</div><div><br></div>