The IDL file can be reverse engineered using OLE-Com Object Viewer. Once the IDL is generated TLB and other files can be generated from it as well. Below is a general direction how to do this.
Steps to reverse generate IDL, TLB and header files for OPCDAAuto.dll:
- Download Windows 7 SDK. I am using GRMSDKX_EN_DVD.iso as the OS is Windows 7 64-bit.
- Install the SDK.
- Open CMD Shell (Start | All Programs | Microsoft Windows SDK v7.0 | CMD Shell)
- Change directory to bin folder.
- Run oleview.exe, this will open a 32-bit version of the application. Note that this is important as the OPCDAAuto.dll I have is 32-bit as well.
- Navigate to Type Libraries | OPC Automation 2.0 (Ver 1.0)
- Double click to view Type Library definition.
- Do File | Save As... to D:\OPCDaAuto\OPCDaAuto.IDL.
- Go back to the cmd.exe as per step 3. Change directory to D:\OPCDaAuto.
- Fix OPCDaAuto.IDL
- Compile the IDL file, like, midl /win32 OPCDaAuto.IDL /header OPCDaAuto.h
- This will fail about OPCGroups type specification.
- Fix this by moving OPCGroups definition in line 188-195 to line 104, this is above OPC Server Object. Save the file, this will change the numbering.
- Compile again as per sub-step 1 above.
- This will fail again about single type specification. Change single to float for the lines as per the output of the compilation.
- Compile again. This time it will complain about OPCGroup type specification.
- Fix this by moving OPCGroup around line 255-262 to around line 196. This above definition of Collection of OPC Group Objects.
- Compile again. This will fail again for another single data type. Convert it to float in 2 more places. Line location should be indicated in the compilation output.
- Compile again. This time it should be successful.
Note that I haven't used the corresponding TLB and header files, yet. I am hoping it will work.