03-26-2014 09:17 AM
We've been trying to compile our VISA Perl bindings (*) against 64bit VISA (on Windows 7), but end up with runtime errors about a missing symbol (viVxiServantResponse does not exist in visa64.dll).
Where did that go? Is it deprecated? Should it just be removed from the interface?
TIA, Andreas
(*)
03-26-2014 12:29 PM
Hi Andreas,
The viVxiServantResponse function is an NI-extension and it isn't part of the standard VISA interface. In 64-bit version of VISA, unlike the 32-bit version, the visa64.dll is an IVI Foundation (owner of the VISA spec) owned component that provides the standard interface, and therefore doesn't support this entrypoint. For the standard functions, this DLL just forwards to the appropriate vendor-specific VISA implementation available on the system, allowing a customer's application to use VISA implementation from multiple vendors in the same application.
If you know that you don't need to use this functionality, feel free to remove it from your bindings. If you do need to use this, you could use nivisa64.dll (the 64-bit version of NI's VISA implementation) directly instead of using the visa64.dll.
Thanks,
Pankaj
03-26-2014 02:59 PM
Thanks a lot. Will test and get back with the results.
03-28-2014 10:58 AM
OK we get one step further. No complaint about missing symbols, but the Perl interpreter crashes now...
Tested combinations:
ActiveState Perl, dmake in VS2013 x64 Cross Dev CMD.exe
Strawberry Perl & gcc - dmake in cmd.exe
Compilation and linking works fine, starting a test script produces only:
"Perl Command Line interpreter has stopped working":
Problem signature:
Problem Event Name: APPCRASH
Application Name: perl.exe
Application Version: 5.18.2.1801
Application Timestamp: 530b986c
Fault Module Name: VISA.dll
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 533576f1
Exception Code: c0000005
Exception Offset: 000000000000baa8
OS Version: 6.1.7601.2.1.0.256.48
Locale ID: 1031
Additional Information 1: dff8
Additional Information 2: dff80e5abbc6c2c777b5136a7d017657
Additional Information 3: 4d84
Additional Information 4: 4d84d6f48b0b90bb949f7c10460d64d2
Does not look particularly helpful to me...
(We checked that the makefile is really linking against visa64.dll. I assume that the Perl makefile produces a VISA.dll during compilation (since the package is called VISA.pm), and that this is the one referenced in the error message.)
03-31-2014 05:07 AM
OK it seems like we're doing something else wrong as well. I got positive feedback from somebody else in the meantime, so it is possible to get the modified code working with 64bit VISA. I've updated the package on CPAN.