From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Linux Users

cancel
Showing results for 
Search instead for 
Did you mean: 

viVxiServantResponse in visa64.dll ?

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

(*)

http://search.cpan.org/~akhuettel/Lab-VISA-3.01/

http://www.labmeasurement.de/

0 Kudos
Message 1 of 5
(7,797 Views)

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

0 Kudos
Message 2 of 5
(4,570 Views)

Thanks a lot. Will test and get back with the results.

0 Kudos
Message 3 of 5
(4,570 Views)

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.)

0 Kudos
Message 4 of 5
(4,570 Views)

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.

0 Kudos
Message 5 of 5
(4,570 Views)