Forums » Saxon/C Help and Discussions »
testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll"
Added by Martin Honnen over 5 years ago
I am trying to use SaxonHEC1.1.2 on Windows 10 with VS 2017, I installed it into the default location C:\Program Files\Saxonica\SaxonHEC1.1.2
and I am able to use the bat file buildCPPSaxonHE.bat
to compile the samples from the samples\cppTests
directory in a command line window of the developer command prompt of VS 2017.
However, when trying to run any of the tests e.g. testXQuery.exe
I only get an error that the libsaxonhec.dll
is not being found:
C:\Program Files\Saxonica\SaxonHEC1.1.2\samples\cppTests>.\testXQuery.exe
Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll
Error: : No error
A test dir "C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll"
however shows the file is there.
Any ideas what could be wrong?
Replies (21)
Please register to reply
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by O'Neil Delpratt over 5 years ago
Hi Martin,
I have managed to reproduce the error message. It's strange not sure what has changed. Maybe what was released is different to the code in subversion. Investigating it now.
Thanks for reporting it.
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by O'Neil Delpratt over 5 years ago
Update:
After investigating this problem for a few hours something seems to have changed in a Windows update which is causing Excelsior Jet to fail. I have reported the issue to Excelsior Jet.
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by O'Neil Delpratt over 5 years ago
Update:
Not yet got to the bottom of the cause. The Excelsior Jet sample is working fine.
The Saxon/C DLL loads fine. But fails further down in the initDefaultJavaRT function, which is in the SaxonCGlue.c file.
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by O'Neil Delpratt over 5 years ago
Hi Martin,
Bug fixed:
In the Saxon.C.API directory please can you replace your SaxonCGlue.c file with the following file:
For Saxon-HE/C: https://dev.saxonica.com/repos/archive/opensource/latest9.8/hec/Saxon.C.API/HEC/SaxonCGlue.c
For Saxon-EE/C: https://dev.saxonica.com/repos/archive/opensource/latest9.8/hec/Saxon.C.API/EEC/SaxonCGlue.c
For Saxon-PE/C: https://dev.saxonica.com/repos/archive/opensource/latest9.8/hec/Saxon.C.API/PEC/SaxonCGlue.c
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by Martin Honnen over 5 years ago
Thanks, I will try that today.
Looking at https://dev.saxonica.com/repos/archive/opensource/latest9.8/hec/Saxon.C.API/HEC/SaxonCGlue.c I wonder whether
snprintf(resources_dir, rDir_len + 42 + 1, "C:\\Program Files\\Saxonica\\SaxonHEC1.1.0", tempResources_dir);
should say
snprintf(resources_dir, rDir_len + 42 + 1, "C:\\Program Files\\Saxonica\\SaxonHEC1.2.0", tempResources_dir);
Or is the 1.2.0 release using resources from the 1.1.0 release?
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by O'Neil Delpratt over 5 years ago
Oh yes thanks for pointing it out. Changing it now.
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by Martin Honnen over 5 years ago
I am still getting the error, only it appears to be hit a bit later, now the output of testXPath.exe
says
Test: XPathProcessor11
Test: SaxonProcessor cp1
Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll
Error: : No error
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by O'Neil Delpratt over 5 years ago
Hi Martin,
I am not able to reproduce the error you are getting. So maybe there is some other difference with the files you have locally. I am in the process of doing a maintenance release for Saxon/C on Windows. So hopefully you can try the new download soon.
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by O'Neil Delpratt over 5 years ago
Hi,
I reproduced the error on Saxon-HE/C. Saxon-EE/C seems to be working fine on windows with the update.
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by O'Neil Delpratt over 5 years ago
Hi Martin,
I have uploaded a new Saxon/C windows maintenance release which contains the fix to your reported issue:
http://www.saxonica.com/saxon-c/libsaxon-HEC-win-setup-v1.1.3.exe
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by Martin Honnen over 5 years ago
Unfortunately at least on the one machine I have tried it I get the same error as before
C:\Program Files\Saxonica\SaxonHEC1.1.3>.\samples\cppTests\testXSLT.exe
Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.3\libsaxonhec.dll
Error: : No error
C:\Program Files\Saxonica\SaxonHEC1.1.3\samples\cppTests>.\testXPath.exe
Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.3\libsaxonhec.dll
Error: : No error
What did you identify as the problem, was that some change in the code or a change in the installation process?
I have no idea what to change, the documentation mentions some environment variable SAXONC_HOME
, do I need to set that or should the installer set that or should the C++ code be able to find the library if the installer installed the program into the default directory C:\Program Files\Saxonica\SaxonHEC1.1.3
?
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by Martin Honnen over 5 years ago
I have now tried to install the HEC 1.1.3 release on another machine but I run into the same problem as before, I can run the bat file in the C++ samples directory to compile the testX sample programs just fine but on trying to run them they do nothing but complain about not being able to load the library "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.3\libsaxonhec.dll".
Here is the copy of the build and run tests in a Visual Studio 2017 developer command prompt:
c:\Program Files\Saxonica\SaxonHEC1.1.3\samples\cppTests>.\buildCPPSaxonHE.bat
c:\Program Files\Saxonica\SaxonHEC1.1.3\samples\cppTests>set jdkdir=C:\Program Files\Saxonica\SaxonHEC1.1.3\Saxon.C.API\jni
c:\Program Files\Saxonica\SaxonHEC1.1.3\samples\cppTests>cl /EHsc "-IC:\Program Files\Saxonica\SaxonHEC1.1.3\Saxon.C.API\jni" "-IC:\Program Files\Saxonica\SaxonHEC1.1.3\Saxon.C.API\jni\win32" testXPath.cpp ../../Saxon.C.API/SaxonCGlue.c ../../Saxon.C.API/SaxonCXPath.c ../../Saxon.C.API/SaxonProcessor.cpp ../../Saxon.C.API/XdmValue.cpp ../../Saxon.C.API/XdmItem.cpp ../../Saxon.C.API/XdmAtomicValue.cpp ../../Saxon.C.API/XdmNode.cpp ../../Saxon.C.API/XQueryProcessor.cpp ../../Saxon.C.API/XSLTProcessor.cpp ../../Saxon.C.API/XPathProcessor.cpp ../../Saxon.C.API/SchemaValidator.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 19.16.27030.1 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
testXPath.cpp
Generating Code...
Compiling...
SaxonCGlue.c
SaxonCXPath.c
Generating Code...
Compiling...
SaxonProcessor.cpp
XdmValue.cpp
XdmItem.cpp
XdmAtomicValue.cpp
XdmNode.cpp
XQueryProcessor.cpp
XSLTProcessor.cpp
XPathProcessor.cpp
SchemaValidator.cpp
Generating Code...
Microsoft (R) Incremental Linker Version 14.16.27030.1
Copyright (C) Microsoft Corporation. All rights reserved.
/out:testXPath.exe
testXPath.obj
SaxonCGlue.obj
SaxonCXPath.obj
SaxonProcessor.obj
XdmValue.obj
XdmItem.obj
XdmAtomicValue.obj
XdmNode.obj
XQueryProcessor.obj
XSLTProcessor.obj
XPathProcessor.obj
SchemaValidator.obj
c:\Program Files\Saxonica\SaxonHEC1.1.3\samples\cppTests>cl /EHsc "-IC:\Program Files\Saxonica\SaxonHEC1.1.3\Saxon.C.API\jni" "-IC:\Program Files\Saxonica\SaxonHEC1.1.3\Saxon.C.API\jni\win32" testXSLT.cpp ../../Saxon.C.API/SaxonCGlue.c ../../Saxon.C.API/SaxonCXPath.c ../../Saxon.C.API/SaxonProcessor.cpp ../../Saxon.C.API/XdmValue.cpp ../../Saxon.C.API/XdmItem.cpp ../../Saxon.C.API/XdmAtomicValue.cpp ../../Saxon.C.API/XdmNode.cpp ../../Saxon.C.API/XQueryProcessor.cpp ../../Saxon.C.API/XSLTProcessor.cpp ../../Saxon.C.API/XPathProcessor.cpp ../../Saxon.C.API/SchemaValidator.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 19.16.27030.1 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
testXSLT.cpp
Generating Code...
Compiling...
SaxonCGlue.c
SaxonCXPath.c
Generating Code...
Compiling...
SaxonProcessor.cpp
XdmValue.cpp
XdmItem.cpp
XdmAtomicValue.cpp
XdmNode.cpp
XQueryProcessor.cpp
XSLTProcessor.cpp
XPathProcessor.cpp
SchemaValidator.cpp
Generating Code...
Microsoft (R) Incremental Linker Version 14.16.27030.1
Copyright (C) Microsoft Corporation. All rights reserved.
/out:testXSLT.exe
testXSLT.obj
SaxonCGlue.obj
SaxonCXPath.obj
SaxonProcessor.obj
XdmValue.obj
XdmItem.obj
XdmAtomicValue.obj
XdmNode.obj
XQueryProcessor.obj
XSLTProcessor.obj
XPathProcessor.obj
SchemaValidator.obj
c:\Program Files\Saxonica\SaxonHEC1.1.3\samples\cppTests>cl /EHsc "-IC:\Program Files\Saxonica\SaxonHEC1.1.3\Saxon.C.API\jni" "-IC:\Program Files\Saxonica\SaxonHEC1.1.3\Saxon.C.API\jni\win32" testXQuery.cpp ../../Saxon.C.API/SaxonCGlue.c ../../Saxon.C.API/SaxonCXPath.c ../../Saxon.C.API/SaxonProcessor.cpp ../../Saxon.C.API/XdmValue.cpp ../../Saxon.C.API/XdmItem.cpp ../../Saxon.C.API/XdmAtomicValue.cpp ../../Saxon.C.API/XdmNode.cpp ../../Saxon.C.API/XQueryProcessor.cpp ../../Saxon.C.API/XSLTProcessor.cpp ../../Saxon.C.API/XPathProcessor.cpp ../../Saxon.C.API/SchemaValidator.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 19.16.27030.1 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
testXQuery.cpp
Generating Code...
Compiling...
SaxonCGlue.c
SaxonCXPath.c
Generating Code...
Compiling...
SaxonProcessor.cpp
XdmValue.cpp
XdmItem.cpp
XdmAtomicValue.cpp
XdmNode.cpp
XQueryProcessor.cpp
XSLTProcessor.cpp
XPathProcessor.cpp
SchemaValidator.cpp
Generating Code...
Microsoft (R) Incremental Linker Version 14.16.27030.1
Copyright (C) Microsoft Corporation. All rights reserved.
/out:testXQuery.exe
testXQuery.obj
SaxonCGlue.obj
SaxonCXPath.obj
SaxonProcessor.obj
XdmValue.obj
XdmItem.obj
XdmAtomicValue.obj
XdmNode.obj
XQueryProcessor.obj
XSLTProcessor.obj
XPathProcessor.obj
SchemaValidator.obj
c:\Program Files\Saxonica\SaxonHEC1.1.3\samples\cppTests>.\testXPath.exe
Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.3\libsaxonhec.dll
Error: : No error
c:\Program Files\Saxonica\SaxonHEC1.1.3\samples\cppTests>testXPath.exe
c:\Program Files\Saxonica\SaxonHEC1.1.3\samples\cppTests>.\testXQuery.exe
Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.3\libsaxonhec.dll
Error: : No error
c:\Program Files\Saxonica\SaxonHEC1.1.3\samples\cppTests>testXSLT.exe
Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.3\libsaxonhec.dll
Error: : No error
c:\Program Files\Saxonica\SaxonHEC1.1.3\samples\cppTests>.\testXSLT.exe
c:\Program Files\Saxonica\SaxonHEC1.1.3\samples\cppTests>
I don't have any idea whether that is an installation problem or compilation problem or some problem with the Saxon code or its library.
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by Martin Honnen over 5 years ago
It seems I have found the problem, it looks like the default developer command prompt is set up to compile for 32 bit while there is a different command prompt x64 native tools and after using that to run the bat file the testXXX programs now run and output the test results.
One oddity remains: one some runs the programs start and "work" for a time and then exit without outputting anything. I will have to test that a bit more to see whether there is some pattern behind that.
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by O'Neil Delpratt over 5 years ago
Martin Honnen wrote:
It seems I have found the problem, it looks like the default developer command prompt is set up to compile for 32 bit while there is a different command prompt x64 native tools and after using that to run the bat file the testXXX programs now run and output the test results.
Yes that explains it. In the 1.1.2 release, we decided to only build Saxon/C for the 64-bit platforms. Is that a show stopper for you?
One oddity remains: one some runs the programs start and "work" for a time and then exit without outputting anything. I will have to test that a bit more to see whether there is some pattern behind that.
Yes I have experienced this happening. I have created a bug issue to keep track of this issue: #4195
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by O'Neil Delpratt over 5 years ago
Is this bug issue reported in #4195 happening on a first run or some subsequent run of the executable? It is possible we have released resources on the JET VM.
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by Martin Honnen over 5 years ago
In the 1.1.2 release, we decided to only build Saxon/C for the 64-bit platforms. Is that a show stopper for you?
No, it was just quite a hurdle in the attempt to get anything to work but is is probably lack of my experience to use C++ compilers.
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by Martin Honnen over 5 years ago
O'Neil Delpratt wrote:
Is this bug issue reported in #4195 happening on a first run or some subsequent run of the executable? It is possible we have released resources on the JET VM.
I am still not sure, looking through the command line history I find adjacent attempts like
C:\Program Files\Saxonica\SaxonHEC1.1.3\samples\cppTests>testXSLT.exe
C:\Program Files\Saxonica\SaxonHEC1.1.3\samples\cppTests>.\testXSLT.exe
C:\Program Files\Saxonica\SaxonHEC1.1.3\samples\cppTests>.\testXSLT.exe
Test: XsltProcessor with Saxon version=Saxon/C 1.1.3 running with Saxon-HE 9.8.0.15J from Saxonica
so it failed to output anything two times and then on the third run it suddenly worked.
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by O'Neil Delpratt over 5 years ago
Update:
It seems like the samples are failing intermittently in SaxonCGlue.c when it calls the following:
HANDLE hDll = LoadLibrary(name);
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by O'Neil Delpratt over 5 years ago
Cause of the problem: the use of snprintf seems leads to pointer issues when building the path with the Dll name.
Workaround:
In the function loadDefaultDll()
Change:
return loadDll(NULL);
to
return loadDll("C:\Program Files\Saxonica\SaxonHEC1.1.3\libsaxonhec.dll" ");
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by O'Neil Delpratt over 5 years ago
Martin Honnen wrote:
One oddity remains: one some runs the programs start and "work" for a time and then exit without outputting anything. I will have to test that a bit more to see whether there is some pattern behind that.
I have now fixed this problem, related to bug issue #4195. I have committed the fix to subversion available for the next maintenance release.
RE: testXXX samples on Windows compile but on running give error "Unable to load C:\Program Files\Saxonica\SaxonHEC1.1.2\libsaxonhec.dll" - Added by O'Neil Delpratt over 5 years ago
Martin Honnen wrote:
I have no idea what to change, the documentation mentions some environment variable
SAXONC_HOME
, do I need to set that or should the installer set that or should the C++ code be able to find the library if the installer installed the program into the default directoryC:\Program Files\Saxonica\SaxonHEC1.1.3
?
I thought I would comment on this question regarding the environment variable SAXONC_HOME. For users who wish to install Saxon/C in a different directory than the default you can set this variable so that Saxon can find the library and associated files such as the data files, license file if using Saxon-EE/C, Saxon-PE/C. It works in the same way as environment variable in the Java product.
In the command prompt you do the following or some other directory:
set SAXONC_HOME=C:\Program Files\Saxonica\SaxonHEC1.1.3
The environment variable can be set via the 'Windows settings'->System.
Please register to reply