<div dir="ltr">Sorry, my mistake, forgot to reply-all.<div><br></div><div>If the original code is used, the binary uiautomationcore.dll fails to compile in the 32-bit build of Wine. The 64-bit build of Wine compiles successfully. Here is the error log:</div><div><br></div><div>/usr/lib/gcc/i686-w64-mingw32/11.2.0/../../../../i686-w64-mingw32/bin/ld: uiautomationcore.dll-61a5829a.spec.o:fake:(.edata+0x170): undefined reference to `UiaRaiseAutomationPropertyChangedEvent@16'<br>collect2: error: ld returned 1 exit status<br>winegcc: /usr/bin/i686-w64-mingw32-gcc failed<br>make[1]: *** [Makefile:215741: dlls/uiautomationcore/uiautomationcore.dll] Error 2<br></div><div><br></div><div>I can submit the original code with the correct prototype but I can't build the 32-bit version of Wine on my machine. Perhaps there's something wrong with my machine? I don't know why the error is happening.</div><div><br></div><div>Here is the line in the spec file of the original code:</div><div><br></div><div>@ stdcall UiaRaiseAutomationPropertyChangedEvent(ptr long long long)<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Nov 29, 2021 at 4:41 AM Nikolay Sivov <<a href="mailto:nsivov@codeweavers.com">nsivov@codeweavers.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
On 11/29/21 12:18 PM, Mohamad Al-Jaf wrote:<br>
<blockquote type="cite">
<div dir="ltr">Hi Nikolay,</div>
</blockquote>
<br>
Please reply-all next time to include the list.<br>
<br>
<blockquote type="cite">
<div dir="ltr">
<div><br>
</div>
<div>I see, that would explain why it fails to compile in 32-bit
Wine. But how does it compile on the 64-bit version? It worked
just fine and the FIXME channel displayed the correct
debugstr_variant output.</div>
<div><br>
</div>
<div>This was the original code:</div>
<div> <br>
HRESULT WINAPI
UiaRaiseAutomationPropertyChangedEvent(IRawElementProviderSimple
*provider, PROPERTYID id, VARIANT oldValue, VARIANT newValue)<br>
{<br>
FIXME("(%p, %d, %s, %s): stub\n", provider, id,
debugstr_variant(&oldValue),
debugstr_variant(&newValue));<br>
return S_OK;<br>
}<br>
<br>
HRESULT WINAPI
UiaRaiseAutomationPropertyChangedEvent(IRawElementProviderSimple
*provider, PROPERTYID id, VARIANT oldValue, VARIANT newValue);<br>
<br>
</div>
<div>I'm not sure I understand how the prototype is wrong, can
you please explain it to me?</div>
</div>
</blockquote>
<br>
What doesn't compile? Prototype has to match the one used on
Windows, you can't change that for exported functions.<br>
<br>
<blockquote type="cite">
<div dir="ltr">
<div><br>
</div>
<div>For stubs, I thought they were unimplemented functions that
simply returned either a boolean or a single value. So in this
case, would it be an implementation? I'm not sure what to put
in the subject line. The function above
it, UiaRaiseAutomationEvent, also returns a value, the same
one. Sorry, I'm just trying to understand you and learn more.</div>
</div>
</blockquote>
<br>
Connor has been working on this lately, I'll leave it to him to
comment.<br>
<br>
<blockquote type="cite"><br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Mon, Nov 29, 2021 at 3:09
AM Nikolay Sivov <<a href="mailto:nsivov@codeweavers.com" target="_blank">nsivov@codeweavers.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
On 11/29/21 10:35 AM, Mohamad Al-Jaf wrote:<br>
>
+/***********************************************************************<br>
> + * UiaRaiseAutomationPropertyChangedEvent
(uiautomationcore.@)<br>
> + */<br>
> +HRESULT WINAPI
UiaRaiseAutomationPropertyChangedEvent(IRawElementProviderSimple
*provider, PROPERTYID id, VARIANT *oldValue, VARIANT
*newValue)<br>
> +{<br>
> + FIXME("(%p, %d, %p, %p): stub\n", provider, id,
oldValue, newValue);<br>
> + return S_OK;<br>
> +}<br>
The prototype is wrong, and return value is not what stubs
usually have.<br>
<br>
</blockquote>
</div>
</blockquote>
<br>
</div>
</blockquote></div>