|
Log in |
FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
Thread Tools | Display Modes |
#1
|
|||
|
|||
![]() After updating to the current NexusDB release I get the following
compiler error (translated from German): [C++ Error] nxllException.hpp(201, 286): E2285 No match found for 'TnxDynObjectArray: ![]() How can this be fixed? |
#2
|
|||
|
|||
![]() Am 08.01.2020 um 09:35 schrieb Holger Franke:
> After updating to the current NexusDB release I get the following > compiler error (translated from German): > > [C++ Error] nxllException.hpp(201, 286): E2285 No match found for > 'TnxDynObjectArray: ![]() > > How can this be fixed? Hello all together! Does anyone else besides me still use NexusDB with CBuilder XE6? Is there any experience in creating the headers? Rodrigo, do you have a hint? Cheers, Holger |
#3
|
|||
|
|||
![]() Hello Holger,
I am only using now CBuilder 10.1 and 10.3, with Nexus 4.5. I still have an app with CBuilder 2007 but that is using an older version, I am not sure which one. Can you post the lines with the problem here? I have this around that line: extern DELPHI_PACKAGE System::UnicodeString __fastcall nxcOrgMessageMarker(void); extern DELPHI_PACKAGE Nxlltypes::_di_InxExceptionDataValue __fastcall nxDecodeExceptionDataValue(const System::UnicodeString s); extern DELPHI_PACKAGE Nxlltypes::_di_InxExceptionDataContainer __fastcall nxCreateExceptionDataContainer(const System::UnicodeString aName, System::TObject* aForObject/* = (System::TObject*)(0x0)*/, const Nxlltypes::TnxDynObjectArray aExcludedObjects/* = Nxlltypes::TnxDynObjectArray()*/); extern DELPHI_PACKAGE void __fastcall nxSetExceptionHookInfo(PnxExceptionHookInfo aInfo); extern DELPHI_PACKAGE PnxExceptionHookInfo __fastcall nxGetExceptionHookInfo(void); where I commented the default values, but not because they gave a compiling error, but because for some stupid C++Builder bug it can't create the PCHs with those, but I don't know if those are the same lines that are giving you problems. HTH, Holger Franke wrote: > Am 08.01.2020 um 09:35 schrieb Holger Franke: >> After updating to the current NexusDB release I get the following >> compiler error (translated from German): >> >> [C++ Error] nxllException.hpp(201, 286): E2285 No match found for >> 'TnxDynObjectArray: ![]() >> >> How can this be fixed? > > Hello all together! > Does anyone else besides me still use NexusDB with CBuilder XE6? > Is there any experience in creating the headers? > Rodrigo, do you have a hint? > > Cheers, Holger -- Rodrigo Gómez [NDX] México, GMT-6 |
#4
|
|||
|
|||
![]() Howdy Holger!
I am using C++ Builder 10.3.3. Here are my BEST practices for getting C Builder to work with NexusDB 4.x (I am using 4.5003 with Rad Studio Tokyo 10.2.3): 1) Just have NexusDB install the software withOUT actually installing it in your IDE. 2) Open the project group for C Builder Tokyo and make sure the C Builder options are to set build the libraries, etc. As far as using NexusDB in a program, this gets tricky. My largest program has to be statically linked (I tried distributing BPLs and it caused the headaches with my customers I was afraid of). The cause of the headaches with statically linking NexusDB seem to come from the use of nxMemoryManager. Here are a few suggestions: 1) If you don't need NexusDB in your application, remove any references in the project so that they don't get linked in. 2) If you do need NexusDB in an application, test for compatibility issues with other 3rd party database components (in my case, I found I couldn't use UniDac SQLLITE components if the NexusDB memory manager was linked into a static program). 3) If your application seems to work with NexusDB when you statically link, you are almost guaranteed to get an EAccessError when your application is closing (gave up trying to figure out why and using BPLS isn't a solution). My solution since I know when my program is closing that all resources have been saved/closed/etc is to use the WIN32/64 API function ExitProcess(). Please read the caveats with using ExitProcess(). It has worked for me over the last several years and so I am happy with it. Hope this helps, Shane |
#5
|
|||
|
|||
![]() Hello Rodrigo,
some time has passed, but the problems are still the same. I am now using the latest version of NexusDB 4.5024 and still using C+Builder XE-6. Compiling and installing the packages runs without problems. All old bpl, bpi and hpp files are removed. However, when I try to build a larger program, the following compiler error messages come up: nxllexception.hpp: extern DELPHI_PACKAGE Nxlltypes::_di_InxExceptionDataContainer __fastcall nxCreateExceptionDataContainer(const System::UnicodeString aName, System::TObject* aForObject = (System::TObject*)(0x0), const Nxlltypes::TnxDynObjectArray aExcludedObjects = (Nxlltypes::TnxDynObjectArray)(0x0)); Raises the error: [C++ Error] nxllException.hpp(201, 286): E2285No match found for: 'TnxDynObjectArray: ![]() This invalid haeader is automatically generated from nxllException.pas. Can it be controlled in the Pascal file that a valid header is generated here? Regards, Holger Am 19.03.2020 um 17:05 schrieb Rodrigo Gómez: > Hello Holger, > > I am only using now CBuilder 10.1 and 10.3, with Nexus 4.5. I still have > an app with CBuilder 2007 but that is using an older version, I am not > sure which one. > > Can you post the lines with the problem here? I have this around that line: > > extern DELPHI_PACKAGE System::UnicodeString __fastcall > nxcOrgMessageMarker(void); > extern DELPHI_PACKAGE Nxlltypes::_di_InxExceptionDataValue __fastcall > nxDecodeExceptionDataValue(const System::UnicodeString s); > extern DELPHI_PACKAGE Nxlltypes::_di_InxExceptionDataContainer > __fastcall nxCreateExceptionDataContainer(const System::UnicodeString > aName, System::TObject* aForObject/* = (System::TObject*)(0x0)*/, const > Nxlltypes::TnxDynObjectArray aExcludedObjects/* = > Nxlltypes::TnxDynObjectArray()*/); > extern DELPHI_PACKAGE void __fastcall > nxSetExceptionHookInfo(PnxExceptionHookInfo aInfo); > extern DELPHI_PACKAGE PnxExceptionHookInfo __fastcall > nxGetExceptionHookInfo(void); > > where I commented the default values, but not because they gave a > compiling error, but because for some stupid C++Builder bug it can't > create the PCHs with those, but I don't know if those are the same lines > that are giving you problems. > > HTH, > > Holger Franke wrote: >> Am 08.01.2020 um 09:35 schrieb Holger Franke: >>> After updating to the current NexusDB release I get the following >>> compiler error (translated from German): >>> >>> [C++ Error] nxllException.hpp(201, 286): E2285 No match found for >>> 'TnxDynObjectArray: ![]() >>> >>> How can this be fixed? >> >> Hello all together! >> Does anyone else besides me still use NexusDB with CBuilder XE6? >> Is there any experience in creating the headers? >> Rodrigo, do you have a hint? >> >> Cheers, Holger > > |
#6
|
|||
|
|||
![]() Hello Holger,
I havne't updated to 4.5024. I'm still on 4.5023. I am guessing that this problem is related to XE-6 directly. What happens if you modify the header youself and instead of (Nxlltypes::TnxDynObjectArray)(0x0) You put: Nxlltypes::TnxDynObjectArray() The line as generated by 10.1 is: extern DELPHI_PACKAGE Nxlltypes::_di_InxExceptionDataContainer __fastcall nxCreateExceptionDataContainer(const System::UnicodeString aName, System::TObject* aForObject = (System::TObject*)(0x0), const Nxlltypes::TnxDynObjectArray aExcludedObjects = Nxlltypes::TnxDynObjectArray()); I have been "fixing" or touching up the headers generated by the compiler for almost all the components I use for years. It's part of the reason I don't upgrade often. Most of the time nowdays is just to fix the "unable to create precompiled headers" error with some default parameters (for instance, in this previous line I have the default parameters commented to avoid this error) or constants, specially Extended ones. I don't know if in this particular case of yours it's just a matter of removing the default parameter or changing the value to avoid the problem and you can compile without issues, or something else is going to creep up. There are ways to avoid this issues, I guess. For instance, I have never had to modify the headers generated by DevExpress components. But I don't know if that's because the installer fixes this kind of things, or they have found and solved in the original Delphi code the way to generate things. There is the HPPEMIT directive, for instance, that is used to directly generate some piece of code in the header. But IIRC those are generated always at the start of the header, which doesn't work for a lot of cases. My recommendation, at this point, is to just "fix" the headers you found with problems and remember to do again when you update to a new version. I have the "Components" folder where I put everything on a Mercurial repo, so I can compare and re-apply my modifications when I update, and that has served me well. For Nexus, I only have to touch up 5 files: - nxspAesCcm.hpp (to remove a duplicate constructor, that the compiler is smart enough to warn when creating the header that it will fail... but doesn't avoid the problem... ?) - nxsllBaseSecureCipher.hpp (the same) - nxsrServerEngine.hpp (to comment some Extended constants that cause PCH problems) - nxllMemoryManager.hpp (to comment some typedefs... that I don't remember what error they caused) - nxllException.hpp (to comment the default values that cause the PCH problems) It's somewhat a PITA but sadly/happily one get used to that. I don't have your version of C++Builder installed to try, but I think I could try to help you if you let us know what other errors you find, it will probably be the same things I already do. HTH, Holger Franke wrote: > Hello Rodrigo, > some time has passed, but the problems are still the same. I am now > using the latest version of NexusDB 4.5024 and still using C+Builder XE-6. > Compiling and installing the packages runs without problems. All old > bpl, bpi and hpp files are removed. > > However, when I try to build a larger program, the following compiler > error messages come up: > > nxllexception.hpp: > extern DELPHI_PACKAGE Nxlltypes::_di_InxExceptionDataContainer > __fastcall nxCreateExceptionDataContainer(const System::UnicodeString > aName, System::TObject* aForObject = (System::TObject*)(0x0), const > Nxlltypes::TnxDynObjectArray aExcludedObjects = > (Nxlltypes::TnxDynObjectArray)(0x0)); > > Raises the error: > [C++ Error] nxllException.hpp(201, 286): E2285No match found for: > 'TnxDynObjectArray: ![]() > > This invalid haeader is automatically generated from nxllException.pas. > Can it be controlled in the Pascal file that a valid header is generated > here? > > Regards, Holger > -- Rodrigo Gómez [NDX] México, GMT-6 |
#7
|
|||
|
|||
![]() Hello Rodrigo,
I have already tried many versions to initialize this default value, without success. But your suggestion works! Thanks a lot! ------------------ Information for other users (and for NexusDB): I have solved another problem: In the header nxrdclass.hpp the type TnxClassClass is used before its definition. Here it helps to move the line: typedef System::TMetaClass* TnxClassClass; to the top. NexusDB: In nxrdClass.pas there is already a HPPEMIT block, can this problem be handled here? ----------------- Now I get all my programs are compiled. :-) But in some modules I get the following linker errors: [ilink32 Error] Error: Not resolvable external '__fastcall Nxllcomponent::TnxPersistent::GetExceptionData(... [ilink32 Error] Error: Not resolvable external '__fastcall Nxsrindexenginebase::TnxBaseIndexEngine::GetExcept ionData(... [ilink32 Error] Error: Not resolvable external '__fastcall Nxsrindexenginebase::TnxBaseIndexPath::GetExceptio nData(... Does anyone have an idea what this could be and how to avoid these errors? Cheers and have a great Christmas! Stay healthy! Holger Am 22.12.2020 um 17:46 schrieb Rodrigo Gómez: > Hello Holger, > > I havne't updated to 4.5024. I'm still on 4.5023. I am guessing that > this problem is related to XE-6 directly. > > What happens if you modify the header youself and instead of > > Â*Â*Â*Â*(Nxlltypes::TnxDynObjectArray)(0x0) > > You put: > > Â*Â*Â*Â*Nxlltypes::TnxDynObjectArray() > > The line as generated by 10.1 is: > > extern DELPHI_PACKAGE Nxlltypes::_di_InxExceptionDataContainer > __fastcall nxCreateExceptionDataContainer(const System::UnicodeString > aName, System::TObject* aForObject = (System::TObject*)(0x0), const > Nxlltypes::TnxDynObjectArray aExcludedObjects = > Nxlltypes::TnxDynObjectArray()); > > I have been "fixing" or touching up the headers generated by the > compiler for almost all the components I use for years. It's part of the > reason I don't upgrade often. Most of the time nowdays is just to fix > the "unable to create precompiled headers" error with some default > parameters (for instance, in this previous line I have the default > parameters commented to avoid this error) or constants, specially > Extended ones. I don't know if in this particular case of yours it's > just a matter of removing the default parameter or changing the value to > avoid the problem and you can compile without issues, or something else > is going to creep up. > > There are ways to avoid this issues, I guess. For instance, I have never > had to modify the headers generated by DevExpress components. But I > don't know if that's because the installer fixes this kind of things, or > they have found and solved in the original Delphi code the way to > generate things. There is the HPPEMIT directive, for instance, that is > used to directly generate some piece of code in the header. But IIRC > those are generated always at the start of the header, which doesn't > work for a lot of cases. > > My recommendation, at this point, is to just "fix" the headers you found > with problems and remember to do again when you update to a new version. > I have the "Components" folder where I put everything on a Mercurial > repo, so I can compare and re-apply my modifications when I update, and > that has served me well. > > For Nexus, I only have to touch up 5 files: > Â* - nxspAesCcm.hpp (to remove a duplicate constructor, that the > compiler is smart enough to warn when creating the header that it will > fail... but doesn't avoid the problem... ?) > Â* - nxsllBaseSecureCipher.hpp (the same) > Â* - nxsrServerEngine.hpp (to comment some Extended constants that cause > PCH problems) > Â* - nxllMemoryManager.hpp (to comment some typedefs... that I don't > remember what error they caused) > Â* - nxllException.hpp (to comment the default values that cause the PCH > problems) > > It's somewhat a PITA but sadly/happily one get used to that. > > I don't have your version of C++Builder installed to try, but I think I > could try to help you if you let us know what other errors you find, it > will probably be the same things I already do. > > HTH, > > Holger Franke wrote: >> Hello Rodrigo, >> some time has passed, but the problems are still the same. I am now >> using the latest version of NexusDB 4.5024 and still using C+Builder >> XE-6. >> Compiling and installing the packages runs without problems. All old >> bpl, bpi and hpp files are removed. >> >> However, when I try to build a larger program, the following compiler >> error messages come up: >> >> nxllexception.hpp: >> extern DELPHI_PACKAGE Nxlltypes::_di_InxExceptionDataContainer >> __fastcall nxCreateExceptionDataContainer(const System::UnicodeString >> aName, System::TObject* aForObject = (System::TObject*)(0x0), const >> Nxlltypes::TnxDynObjectArray aExcludedObjects = >> (Nxlltypes::TnxDynObjectArray)(0x0)); >> >> Raises the error: >> [C++ Error] nxllException.hpp(201, 286): E2285No match found for: >> 'TnxDynObjectArray: ![]() >> >> This invalid haeader is automatically generated from nxllException.pas. >> Can it be controlled in the Pascal file that a valid header is generated >> here? >> >> Regards, Holger >> > |
Thread Tools | |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Nexus 4.0015 doest not work with CBuilder XE10 | Oliver Lang | nexusdb.public.support.cbuilder | 0 | 17th December 2015 07:15 PM |
CBuilder XE3, Nexus 3.11: "Multiple declarations of "_fastcall EnxSyncException" | Karsten Lehnart | nexusdb.public.support.cbuilder | 2 | 12th January 2013 09:53 PM |
CBuilder XE3, Nexus 3.11: "Multiple declarations of "_fastcall EnxSyncException":Screenshot and Logfile | Karsten Lehnart | Binaries | 0 | 11th January 2013 06:37 AM |
Error Nexus Transport DLL (ADOServerConnectorV3.dll) not found! ??? | Fernando | nexusdb.public.support | 1 | 22nd January 2011 09:57 AM |
EM CSV Import and Match by Name | Jerry Hayes | nexusdb.public.support | 6 | 26th August 2007 02:46 AM |