On 25/06/2014 12:34 a.m., Jason King wrote:
On Tuesday, 24 June 2014 at 04:37:56 UTC, Rikki Cattermole wrote:
On 24/06/2014 1:13 p.m., Jason King wrote:
This is me trying to link with Juno and getting tantalizingly close to
success.

DMD home is d:\d so binaries are d:\d\dmd2\windows\bin (on path)
Juno is in
D:\dlang\Juno-Windows-Class-Library
D:\dlang\Juno-Windows-Class-Library\juno.lib exists
sc.ini is untouched

D:\dlang\Juno-Windows-Class-Library\examples\com>dmd
-L+d:\dlang\Juno-Windows-Cl
ass-Library\juno.lib -Id:\dlang\Juno-Windows-Class-Library events.d
OPTLINK (R) for Win32  Release 8.00.15
Copyright (C) Digital Mars 1989-2013  All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
d:\dlang\Juno-Windows-Class-Library\juno.lib(core)
 Error 42: Symbol Undefined _VarCmp@16
--- errorlevel 1


Looks like that's a Windows API function [0].
Get it to link with OleAut32 and it should work, if I'm correct.


Thanks, Rikki
There was a pragma(lib,"oleaut32.lib") in one of the source files, so it
should have been linking.
The problem now is that the DM oleaut32.lib doesn't include a _VarCmp@16.
I ran lib -l oleaut32.lib to get a list file.  No exported _VarCmp@16.
There were 400-odd lines of exports so I believe lib -l worked.
If I run implib /s oleaut32.lib oleaut32.dll vs. a windows XP
oleaut32.dll I get an oleaut32.lib that includes a _VarCmp (not
_VarCmp@16).
What's the secret sauce to creating an oleaut32.lib that's fully
decorated?  Is there a way to get a newer oleaut32.lib into the d
distributions.  The full dmc oleaut32.lib is also missing _VarCmp@16 so
no joy there either.

I don't know enough about implib to explain it.
But another method that I believe should work is to use linker definition files.
It'll allow optlink to work.
Just add it to dmd, actually I believe it needs to be passed to Optlink (so -L it).

Another fix, might be to use 64bit, but shouldn't be required.

[0] http://www.dsource.org/projects/bindings/wiki/DefFiles/OleAut32

Reply via email to