#1  
Old 8th January 2020, 07:35 PM
Holger Franke
 
Posts: n/a
Default CBuilder XE6, Nexus 4.5017 No match found for

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:ynamicArray(int)'

How can this be fixed?
  #2  
Old 19th March 2020, 11:42 PM
Holger Franke
 
Posts: n/a
Default Re: CBuilder XE6, Nexus 4.5017 No match found for

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:ynamicArray(int)'
>
> 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  
Old 20th March 2020, 04:05 AM
Rodrigo Gómez
 
Posts: n/a
Default Re: CBuilder XE6, Nexus 4.5017 No match found for 'TnxDynObjectArray::DynamicArray(int)'

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:ynamicArray(int)'
>>
>> 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  
Old 21st March 2020, 03:55 AM
Shane Stump
 
Posts: n/a
Default Re: CBuilder XE6, Nexus 4.5017 No match found for

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  
Old 22nd December 2020, 10:10 PM
Holger Franke
 
Posts: n/a
Default Re: CBuilder XE6, Nexus 4.5017 No match found for

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:ynamicArray(int)'

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:ynamicArray(int)'
>>>
>>> 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  
Old 23rd December 2020, 03:46 AM
Rodrigo Gómez
 
Posts: n/a
Default Re: CBuilder XE6, Nexus 4.5017 No match found for 'TnxDynObjectArray::DynamicArray(int)'

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:ynamicArray(int)'
>
> 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  
Old 23rd December 2020, 07:30 PM
Holger Franke
 
Posts: n/a
Default Re: CBuilder XE6, Nexus 4.5017 No match found for

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:ynamicArray(int)'
>>
>> 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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
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


All times are GMT +11. The time now is 11:56 PM.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.