I have been using TMS Smart Setup for a while now.
I updated TMS VCL UI Pack from 13.6.2 to 13.6.4 using tmsgui.exe ver 3.3. The installation completed without issues and tms smart setup updated to 3.4.
But when I tried to build the project that I was working on before the update. I got many errors starting with this error:
[bcc32 Error] transact.h(303): E2238 Multiple declaration for 'ITransaction'
Full parser context
fMain.cpp(11): #include C:\RADTools\TMS\Products\tms.vcl.uipack\packages\d13\Win32\Release\DBAdvGrid.hpp
DBAdvGrid.hpp(40): #include c:\program files (x86)\embarcadero\studio\37.0\include\windows\rtl\Data.Win.ADODB.hpp
Data.Win.ADODB.hpp(28): #include c:\program files (x86)\embarcadero\studio\37.0\include\windows\rtl\Winapi.OleDB.hpp
Winapi.OleDB.hpp(24): #include c:\program files (x86)\embarcadero\studio\37.0\include\windows\sdk\transact.h
on a different project that I just did a make on. I got the error that the libssh2.lib was missing. After a VCL UI Pack install, the file is usually in the Products\tms.vcl.uipack directory. I normally move the file to the Products\tms.vcl.uipack\packages\d13\Win32\Release directory so the the linker can find it. The file is missing after the 13.6.4 installation.
I then uninstalled TMS VCL UI Pack 13.6.4 and manually installed the previous version.
- I cannot think of a reason the new version would introduce this issue with "Multiple declaration for 'ITransaction". Does this problem also happen when you drop TDBAdvGrid on a form in a new project?
Can you check if it helps to add
#define __ITransaction_INTERFACE_DEFINED__
#include <DBAdvGrid.hpp>
to the .cpp file that has the TDBAdvGrid?
- We'll check a possible issue with the distribution of the .dll files in the new version and we'll release an update when needed
Thank you for the quick response.
So far, the ITransaction errors are only happening in one project that I have.
The project compile with no issues with VCL UI Pack ver 13.6.2 or ver 13.6.3. After I install ver 13.6.4 I get the ITansaction errors. Adding the #define __ITransaction_INTERFACE_DEFINED__eliminated the first ITransaction error but the ambiguity errors still occurred: [bcc32 Error] transact.h(418): E2015 Ambiguity between 'ITransaction' and 'Ibcfbintfuni::ITransaction'
The errors occurred between DevArt UniDac components and these 3 sdk files: Transact.h, oledb.h, and Winapi.ADOInt.hpp. Transact.h has the declaration for ITransaction.
I was able to get my project to compile after I changed the ITransaction variable to ITransaction3 in the 3 sdk files. I then copied the libssh2.lib file and associated dlls from the 13.6.3 directory to the 13.6.4 directory (I think there were about 10 files missing in 13.6.4). After that the project linked and ran ok.
There is no ITransaction declaration in vcl ui pack. so I don’t understand what caused the errors.
Creating a new C++Builder project with a TDBAdvGrid on the main form compiled and linked with no issues.
I am going to rebuild the project to see if I can eliminate the errors.
Thanks again,
Elias
If somehow a problem persists, please provide a sample source project with which we can reproduce the problem here for investigation.
We have released v13.6.4.1 now with the missing DLL files included.