Solution
The documentation of the function IMAQdx Enumerate Cameras VI indicates that the IMAQdx Discover Ethernet Cameras.vi needs to be called before IMAQdx Enumerate Cameras.vi.
In the development environment, the code works correctly because NI MAX has already performed the GigE camera discovery, and LabVIEW can access this existing information.
In contrast, when running the application, the system must perform the discovery process again. GigE camera discovery relies on network communication (UDP broadcast), which is not instantaneous.
Due to this, the application attempts to enumerate cameras before the discovery process has fully completed, resulting in an empty or uninitialized camera information array.
By adding a delay after IMAQdx Discover Ethernet Cameras.vi, the application is given sufficient time for the discovery responses to be received and processed. This allows the internal camera list to be populated correctly before calling IMAQdx Enumerate Cameras.vi.
The implementation is shown in the image below:
After introducing this delay, the cameras are successfully enumerated in the application.