Symbol Undefined _D2rt12__ModuleInfoZ

Carl Sturtivant sturtivant at gmail.com
Mon Dec 9 09:42:38 PST 2013


I'm building a 32-bit windows executable using dmd 2.064.2, dmc 
(857 according to the file in its root directory, but when run it 
says 8.42n), and implicitly optlink. The executable is the a vm 
for an interpreted language.

The source is mainly C that I didn't write, but I successfully 
bolted a D front end on, making it a genuine windows program (not 
a console program) and got a working build that could achieve my 
main purpose: dynamically loading a DLL written in D and sync'ing 
the runtimes so there's only one GC (the one in the EXE). 
Everything builds and works perfectly at this point.

Now I've rewritten the memory management and allocation modules 
in D, and excluded the C ones from the build. And I get 
mysterious linker errors for the first time.

The command I'm using for the last step of the build and the 
reply from optlink are as follows.

=======================================
dmd -d -oficonx.exe dmain.d dmemmgt.d dalc.d  @diconx.link 
iconx.def -L/map/noi

OPTLINK (R) for Win32  Release 8.00.13
Copyright (C) Digital Mars 1989-2010  All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
iconx.obj(iconx)
  Error 42: Symbol Undefined _D2rt12__ModuleInfoZ
iconx.obj(iconx)
  Error 42: Symbol Undefined _D2rt6b_real6__initZ
iconx.obj(iconx)
  Error 42: Symbol Undefined 
_D2rt6b_real11__xopEqualsUKxS2rt6b_realKxS2rt6b_realZb
=======================================

diconx.link is just a list of the objects compiled earlier from 
the C source plus shell32.lib .

It seems that dmain.d , dmemmgt.d and dalc.d are being compiled 
by dmd into a single object iconx.obj . Running the Digital Mars 
librarian `lib -l iconx.obj` on that object produces iconx.lst 
which does not contain the symbols complained about above. And 
these three files contain the only D source. The rest is C.

Any advice about what's going on or what to do?



More information about the Digitalmars-d-learn mailing list