On Friday, 23 August 2019 at 16:19:10 UTC, Mike Parker wrote:
On Friday, 23 August 2019 at 16:09:16 UTC, jicman wrote:

}

That looks like D2 code. I am trying to compile D1 code. I think the linker is not getting something right.

You might try declaring the offending functions as extern(Windows) function pointers and then loading them from the appropriate DLLs via LoadLibrary/GetProcAddress. I had to do that with some Win32 functions I used back before we got support for COFF and the Windows SDK because, for whatever reason, they were missing from the OMF libs that ship with DMD.

I think you may be up to something, here. I actually have declared them as extern(Window), ie.

<D1code>
extern(Windows):

void VariantInit(ref VARIANT pvarg);
int VariantClear(ref VARIANT pvarg);
int VariantCopy(ref VARIANT pvargDest, ref VARIANT pvargSrc);

int VarCmp(ref VARIANT pvarLeft, ref VARIANT pvarRight, uint lcid, uint dwFlags); int VarAdd(ref VARIANT pvarLeft, ref VARIANT pvarRight, out VARIANT pvarResult); int VarAnd(ref VARIANT pvarLeft, ref VARIANT pvarRight, out VARIANT pvarResult); int VarCat(ref VARIANT pvarLeft, ref VARIANT pvarRight, out VARIANT pvarResult); int VarDiv(ref VARIANT pvarLeft, ref VARIANT pvarRight, out VARIANT pvarResult); int VarMod(ref VARIANT pvarLeft, ref VARIANT pvarRight, out VARIANT pvarResult); int VarMul(ref VARIANT pvarLeft, ref VARIANT pvarRight, out VARIANT pvarResult); int VarOr(ref VARIANT pvarLeft, ref VARIANT pvarRight, out VARIANT pvarResult); int VarSub(ref VARIANT pvarLeft, ref VARIANT pvarRight, out VARIANT pvarResult); int VarXor(ref VARIANT pvarLeft, ref VARIANT pvarRight, out VARIANT pvarResult);
</D1code>

So you have some sample piece of code that can guide me through loading the DLL using LoadLibrary/GetProcAddress? I have not done that. But, as you can see, VarAdd, VarAnd, ..., VarXor, are loading ok. The only one in this one is VarCmp. It could be that it may be missing from the list, as you say.

Reply via email to