Am 18.02.2014 18:31, schrieb Matthew Fong:
On Tue, 18 Feb 2014 10:06:05 GMT, Sönke Ludwig wrote:
{ ... "subConfigurations": { "vibe-d": "win32" }, "versions": ["VibeDefaultMain"] }
This will use the correct linker settings. Have a look at vibe.d's package.json to see how this is organized.
Ok, this almost fixes the problem.
After adding that section to my package.json, the output is as follows:C:\test_flash\project>dub --arch=x86_64 Got application for true Checking dependencies in 'C:\test_flash\project' Copying files... Building configuration "application", build type debug Compiling... source\autodata.d(46): Warning: toHash() must be declared as extern (D) size_t toHash() const nothrow @safe, not const ulong() Linking... packetexport.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp_TranslateMessage" in Funktion "_D4vibe4core7drivers5win3216Win32EventDriver15doProcessEventsMFkZb". (...)
So I looked up these missing functions on MSDN and turns out they're all from User32.lib, so I simply added
"libs-windows": [ ... "user32" ],
to dub's package.json. That made it compile+link+run correctly. I'm now a happy guy :)
Still, I wonder why this was necessary for me though. If this really is required, maybe it should be added by default.
Seems like the 32-bit toolchain has these symbols defined automatically
somehow (probably dragged in by Phobos/Druntime). I didn't notice the
problem on 64-bit either, because the tested projects all had user32.lib
manually linked in already for other reasons. I'll add it to the list now.