Closed Venorcis closed 3 years ago
Hmmm. Nothing has been changed to the JPL sources since 8.3.15. The build system has been updated to Fedora 33 (from 31) though, getting a new version of MinGW. This relates to #82. The set of support DLLs has probably changed. You can (now) find these by calling win_process_modules/1.
If that doesn't help, the daily binaries are still compiled with Fedora 31. You could check whether these still work. At least we then know for sure it is the build environment or the Prolog sources that is to be blamed.
Hi @JanWielemaker, The daily build indeed seems to work fine!
Good. Eventually the daily builds will also move to Fedora 33 (or later) and it would be good if we have some clue what is going wrong. Notably the GCC runtime libraries have changed. This was libgcc_s_seh-1.dll
, but now seems to be libgcc_s_dw2-1.dll
and libssp-0.dll
. Did you update you package to deal with this change?
The way to find out on your platform is to start swipl.exe from the installed version and run
?- [library(jpl)].
?- win_process_modules(L), forall(member(M,L), writeln(M)).
Hi @JanWielemaker,
Executing [library(jpl]]
on Windows x64 gives me the same error (though with some more detail):
Hmmm. Loads fine in the build environment (under Linux and Wine) which also uses AdoptOpenJDK. Loading on Win10 under VirtualBox which runs Oracle Java I get the same message. PL_action
is defined libswipl.dll
. I can't find any difference, not in the declarations nor when inspecting the dll between PLaction() and the other PL functions that do seem to work :cry: Why is developing for Windows so hard ...
It remains mostly a mystery. I think it is related to MinGW 10 provided with Fedora 33 and most likely the binutils thereof. I have little clue why and how though. I rebuild the docker image using Fedora 32 which uses MinGW 9.2. That fixes the problem.
The main drawback is that Fedora 32 is nearly end of life :cry: It might relate to https://bugzilla.redhat.com/show_bug.cgi?id=1836618
Anyway. Both daily's and releases starting with 8.3.25 will at least for a while be build using Fedora 32. I think that closes the issue for now.
I was looking to update from 8.3.17 to the latest 8.3.23, put JPL doesn't seem to work anymore on Windows (x64). Trying to load the new jpl.dll in Java gives a "The specified procedure could not be found" error.