Open Bug 1418991 Opened 7 years ago Updated 2 years ago

HandlerProvider.obj : error LNK2001: unresolved external symbol IID_IAccessibleDocument

Categories

(Core :: Disability Access APIs, defect, P3)

defect

Tracking

()

People

(Reporter: florian, Unassigned)

References

Details

I just wasted time today with a Windows build taking 65 minutes before failing with this error:
HandlerProvider.obj : error LNK2001: unresolved external symbol _IID_IAccessibleDocument

Googling the error shows that this has already been mentioned on IRC at least twice:
https://mozilla.logbot.info/developers/20171114#c13846650
https://mozilla.logbot.info/build/20171117#c13867514

If a newer version of the an SDK is required, configure should fail.

Needinfo on Aaron who introduced this code, and Mike who can hopefully advise on the best path forward.
Flags: needinfo?(mh+mozilla)
Flags: needinfo?(aklotz)
IAccessibleDocument is an IAccessible2 interface whose idl is stored in our tree at other-licences/ia2
(It is not part of the Windows SDK).

I find it strange that this is only being encountered intermittently -- the code that references that interface changed recently, but that IDL has not.
Flags: needinfo?(aklotz)
All I know about this is that I spent some time failing to find what was wrong, and in parallel was reinstalling a VM with VS2017, which ended up working, so I just moved on.
Flags: needinfo?(mh+mozilla)
is it Disability Access API issue, shouldn't we move bug to build component?
Priority: -- → P3
Florian, what did you do to fix this locally for you? I am having this problem now.
Flags: needinfo?(florian)
It seems a few people encounter this, but most don't. A few things worth noting:
1. accessible/ipc/win/HandlerProvider.cpp does reference IID_IAccessibleDocument.
2. In order for IID_IAccessibleDocument to be included, AccessibleDocument_i.c must be included or linked.
3. AccessibleDocument_i.c is currently included by ipc/win/PlatformChild.cpp.
4. It can't be included by HandlerProvider.cpp as well. Otherwise, you'd get duplicate symbol errors when linking xul.dll.
5. However, the fact that it's included by PlatformChild.cpp should mean that it's available to HandlerProvider.cpp when it's linked into xul.dll.

So, why do some systems complain? Is PlatformChild.cpp being excluded for some reason? Or is there something that changes the linker's behaviour concerning this?
(In reply to Jared Wein [:jaws] (please needinfo? me) from comment #4)
> Florian, what did you do to fix this locally for you? I am having this
> problem now.

I just commented out https://searchfox.org/mozilla-central/rev/769222fadff46164f8cc0dc7a0bae5a60dc2f335/accessible/ipc/win/HandlerProvider.cpp#473 and moved on.
Flags: needinfo?(florian)
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.