W T Meyer
2006-07-17 20:52:34 UTC
I am using omniORB to salvage some legacy software developed on a
Windows machine using a National Instruments VME hardware interface
and LabWindows GUI to access VME hardware. The application is
written in C and must be compiled with NI's CVI compiler to get the
GUI interface. We have replaced the old NI hardware interface with a
single board computer running Linux and want to keep using the old
client software.
I have developed a DLL that replaces the client's calls to NI
routines (in C) with work-alike routines using omniORB. I must
compile the omniORB code with MSVC++ (version 6.0) and export it
using 'extern "C"' in order for the CVI compiler to link to it.
I had all of this working until I added the ability to transfer
arrays, which required adding _var variables. After that, the old
method of compiling on MSVC++ still gave a DLL and gave no error
messages, but neither CVI nor MSVC++ client programs were able to use
it - the DLL was somehow corrupted.
Following the advice in chapter 12 of the omniORB manual, I tried
adding '#define USE_stub_in_nt_dll' before including my stub headers
and this did not fix the problem.
Does anyone have any experience doing this, or any thoughts that
could be helpful?
Thanks,
Tom Meyer
Windows machine using a National Instruments VME hardware interface
and LabWindows GUI to access VME hardware. The application is
written in C and must be compiled with NI's CVI compiler to get the
GUI interface. We have replaced the old NI hardware interface with a
single board computer running Linux and want to keep using the old
client software.
I have developed a DLL that replaces the client's calls to NI
routines (in C) with work-alike routines using omniORB. I must
compile the omniORB code with MSVC++ (version 6.0) and export it
using 'extern "C"' in order for the CVI compiler to link to it.
I had all of this working until I added the ability to transfer
arrays, which required adding _var variables. After that, the old
method of compiling on MSVC++ still gave a DLL and gave no error
messages, but neither CVI nor MSVC++ client programs were able to use
it - the DLL was somehow corrupted.
Following the advice in chapter 12 of the omniORB manual, I tried
adding '#define USE_stub_in_nt_dll' before including my stub headers
and this did not fix the problem.
Does anyone have any experience doing this, or any thoughts that
could be helpful?
Thanks,
Tom Meyer