All,
I'm stumped on an issue. I have created both a DLL and a linux shared object from the same source. I wrap these libraries with LabVIEW for execution. One of the functions exported by the library is not being loaded by LabVIEW when running on NI-Linux (cRIO-9068, LabVIEW 2015sp1). All functions execute just fine on windows.
This function is created and exported just like all the others. The other functions load and execute just fine on the cRIO. However, the function "void CPG(void)" fails to load giving the following error
It seems that the function is being exported properly. Here is the output of Dependency Walker on the windows DLL compilation:
I can equally analyze the exports from the shared library using:
nm -D -C --defined-only -g ./librobotwrapper.so
the output here seems to indicate the function is exported just fine:
Yet, the error from LabVIEW is not referencing the function "CPG" but what appears to be a mangled function name "CPG:C". Neither Dependency Walker (windows) nor NM (linux) indicate any name mangling. And, as I mentioned all other functions exported successfully load and execute except this one. In fact, these graphics where made with a modified source where the guts of the CPG() function have been ALL commented out. This appears to be entirely a LabVIEW linker issue. I created a second 'deleteme.vi' with a fresh Call Library Node and got the same results. See below,
I'm completely stumped here. Is there something simple that I'm just not seeing?
Thanks in advance.