Third-Party Card Not Initializing in LabVIEW 64-bit

Updated Jul 15, 2026

Reported In

Software

  • LabVIEW

Operating System

  • Windows

Issue Details

I am using a third-party PXI hardware card with a vendor-provided DLL in LabVIEW. The same implementation works correctly in LabVIEW 32-bit, but in LabVIEW 64-bit, the hardware does not initialize.
The VI executes without reporting any LabVIEW errors or DLL-related errors. However, the hardware remains in its default state and does not respond to initialization commands.

Solution

This issue can occur when pointer-related parameters are incorrectly configured in the Call Library Function Node.
In 32-bit LabVIEW, pointers and hardware handles are 32-bit values, while in 64-bit LabVIEW, they require 64-bit values. If the Call Library Function Node is configured to pass these parameters as standard 32-bit integers, LabVIEW passes an incorrect (truncated) pointer value to the DLL. This can result in initialization failure or undefined behavior.
To resolve this issue, configure pointer-related parameters to use a platform-independent data type:
  1. Open the VI that calls the DLL.
  2. Double-click the Call Library Function Node used for hardware initialization.
  3. Navigate to the Parameters tab.
  4. Identify parameters representing:
    • Memory addresses
    • Hardware handles
    • Pointer types (for example, void*)
    • Size-related types (for example, size_t)
  5. Change the Data Type for these parameters to:
    • Signed Pointer-sized Integer or
    • Unsigned Pointer-sized Integer
  6. Verify that the parameter passing mode (Value or Pointer to Value) matches the DLL function prototype.
  7. Verify that the Calling Convention (for example, C or stdcall) matches the DLL documentation.
  8. Save the VI and run it in LabVIEW 64-bit.
Using the Pointer-sized Integer type ensures that LabVIEW passes pointer values using the correct size for the current platform (32-bit or 64-bit).

Additional Information

Pointers in C/C++ DLLs represent memory addresses and must match the platform architecture. In 64-bit environments, pointers expand to 64 bits, and using fixed-size 32-bit integers can result in incorrect memory addressing.
Incorrect configuration of Call Library Function Node parameters or calling conventions can lead to undefined behavior, initialization failures, or runtime errors such as 1097.