On Sat, 29 Apr 2023 19:26:00 GMT, Julian Waters <jwat...@openjdk.org> wrote:

> In windowsaccessbridge(-64).dll the following methods are exported in a def 
> file to C API which in turn call their real implementation, which are 
> instance methods of the class WinAccessBridge:
> 
> addJavaEventNotification
> removeJavaEventNotification
> addAccessibilityEventNotification
> removeAccessibilityEventNotification
> 
> 
> However, they are nowhere to be seen in the actual C interface, in 
> AccessBridgeWindowsEntryPoints.cpp. Your guess is as good as mine as to how 
> on earth MSVC is still capable of compiling and linking this without any 
> errors whatsoever, but in any case, this is a severe oversight and should be 
> properly defined in the C API lest this happy accident within MSVC is fixed 
> by Microsoft in the future

The problem as I see it is that the .def is exporting something that simply 
does not exist at all, even if it is a non-public API and the symbols are 
simply exported from the DLL for internal use by other accessbridge code, then 
these methods should still be placed in the extern "C" block in the .cpp (but 
maybe not in the corresponding header since they aren't public). Conversely if 
it is never meant to be exported but the accessbridge DLLs somehow need the 
.def files to export phantom, nonexistent symbols to work properly, then 
something is seriously wrong with them and we should probably take a look at 
what on earth is going on there

-------------

PR Comment: https://git.openjdk.org/jdk/pull/13734#issuecomment-1534192271

Reply via email to