Linker errors and how to catch them

jerro a at a.com
Mon Feb 18 09:17:55 PST 2013


On Monday, 18 February 2013 at 16:47:00 UTC, Lubos Pintes wrote:
> I am playing with library dgui.
> In 2.060, everything built fine.
> One of library samples imports std.string. Perhaps the VisualD 
> doesn't include necessary library?
> I updated the DMD as follows: I deleted the dmd2 from C:\D 
> folder and replaced it with one I downloaded from dlang.org. Is 
> this nonstandard in some way? I randomly tested/wrote short 
> programs and they worked.
> I also issued the clean solution, but that didn't help.

I am assuming you are using the prebuilt libraries from one of 
the rar files at http://code.google.com/p/dgui/downloads/list 
(the .lib files in the lib folder in the rar file). The newest of 
those files was uploaded in December 2011, so the most recent 
version of DMD that could have been used to build the .lib files 
is 2.057. The signature of std.string.format has changed in 
2.061, so Phobos doesn't contain a function with mangled name 
_D3std6string6formatFYAya any more, and because dgui.lib and 
dgui_debug.lib use that function, you get a linker error.

To solve this problem you need to rebuild the files dgui.lib and 
dgui_lib.lib with DMD 2.062 (using dgui_build_dbg.bat and  
dgui_build_rel.bat). But because DGui hasn't been updated since 
2011 AFAICS, it probably won't compile with dmd 2.062. You'll 
probably need to fix a bunch of compiler errors inside DGui to be 
able to use it with DMD 2.062.


More information about the Digitalmars-d-learn mailing list