Using ADSDBE with Xbase++ 2.0
Posted: Sat Mar 21, 2015 6:32 am
I ran into a problem with ADSDBE the other day after updating my Xbase++ 2.0 to the latest build.
Suddenly, none of my programs that connect to Advantage Server would connect anymore. I would get 5381 errors (undocumented) and DLL conflict errors.
This is because I had forgotten that I replaced the Ads Client files in the Alaska runtime folders with the most current version. When I updated, these files were overwritten by the old ones from the Alaska installation.
Deployment of ADS client libraries MUST adhere to the following rule: They MUST reside in the same folder as ADSDBE.DLL.
Regardless of what your SET PATH says, the client DLLs are first loaded from the same folder as ADSDBE.DLL.
NOTE: This is not necessarily a problem with deployment of your application to your customers because most deployments include the Alaska runtime all in one folder. This is mostly an aggravation during development because development environments tend to have the Alaska runtime in only one place and use the SET PATH environment to find the DLLs. This is the preferred way to develop Xbase++ applications because eliminating redundancies also eliminates ambiguities.
There are 2 possible solutions to this problem which must be applied every time you update your Xbase++ 2.0 runtime.
1. Remove ACE32.DLL and AXCWS32.DLL from the following folders:
C:\Program Files (x86)\Alaska Software\cxp20\bin
C:\Program Files (x86)\Alaska Software\xpp20\lib
C:\Program Files (x86)\Alaska Software\xpp20\runtime
2. Copy the four (4) ADS client DLLs from the latest ADS version to these 3 folders and overwrite those files. The most current ADS client files are the following: ACE32.DLL, AXCWS32.DLL, ADSLOC32.DLL and AICU32.DLL.
These 4 DLLs can be found in your C:\Program Files (x86)\Advantage 10.0\ARC folder
Suddenly, none of my programs that connect to Advantage Server would connect anymore. I would get 5381 errors (undocumented) and DLL conflict errors.
This is because I had forgotten that I replaced the Ads Client files in the Alaska runtime folders with the most current version. When I updated, these files were overwritten by the old ones from the Alaska installation.
Deployment of ADS client libraries MUST adhere to the following rule: They MUST reside in the same folder as ADSDBE.DLL.
Regardless of what your SET PATH says, the client DLLs are first loaded from the same folder as ADSDBE.DLL.
NOTE: This is not necessarily a problem with deployment of your application to your customers because most deployments include the Alaska runtime all in one folder. This is mostly an aggravation during development because development environments tend to have the Alaska runtime in only one place and use the SET PATH environment to find the DLLs. This is the preferred way to develop Xbase++ applications because eliminating redundancies also eliminates ambiguities.
There are 2 possible solutions to this problem which must be applied every time you update your Xbase++ 2.0 runtime.
1. Remove ACE32.DLL and AXCWS32.DLL from the following folders:
C:\Program Files (x86)\Alaska Software\cxp20\bin
C:\Program Files (x86)\Alaska Software\xpp20\lib
C:\Program Files (x86)\Alaska Software\xpp20\runtime
2. Copy the four (4) ADS client DLLs from the latest ADS version to these 3 folders and overwrite those files. The most current ADS client files are the following: ACE32.DLL, AXCWS32.DLL, ADSLOC32.DLL and AICU32.DLL.
These 4 DLLs can be found in your C:\Program Files (x86)\Advantage 10.0\ARC folder