c++builderdllexportlabviewteststand

Export C functions for LabView with c++builder


I have a DLL that I have ported from VC2008 to C++ Builder XE2. The DLL is used in LabVIEW's TestStand.

TestStand, when importing the VC2008 DLL, can see the function names and their arguments. When using the C++ Builder DLL, all its sees are the function names and not the arguments. All exports are C functions and use extern "C" declspec( dllexport ).

Is there a way to get the exports correct?

I have read that adding a TLB file will do the job, if this is true, how do I create a TLB that exports only C functions?


Solution

  • TestStand can read a .c/.cpp file and derive parameters from that file. You still load the DLL and select the function you want to call. You then 'verify' the parameters and select the .c/.cpp file in the dialog. TestStand will find the function with the same name and insert the parameters itself.

    The function must be very specific, I had to create a dummy .c file that contained the prototypes as TestStand could not handle the #defines for dllexport and dllimport. It likes a very specific format. For the function:

    TESTAPI bool StartTest( long inNumber ) {}
    

    where TESTAPIis either extern "C" __declspec( dllexport ) or extern "C" __declspec( dllimport I had to write the line below in my dummy file:

    bool __declspec( dllexport ) StartTest( long inNumber ) {}
    

    That does it.