#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
>>

>


  #8  
Old 4th February 2021, 11:32 PM
Holger Franke
 
Posts: n/a
Default Re: CBuilder XE6, Nexus 4.5017 No match found for

Hello Shane,
thank you for your answer.

Am 20.03.2020 um 16:55 schrieb Shane Stump:

> 2) Open the project group for C Builder Tokyo and make sure the C
> Builder options are to set build the libraries, etc.


This is probably a stupid question, but it's the first time I've come
across this problem: Which option do you use for "Export - C/C++"? I
have set "Create all C++Builder files (also package libs)", but here no
..obj files are created.
But I need the .obj files, because otherwise e.g. #pragma link
"nxseAllEngines" doesn't find the file nxseAllEngines.obj.

Regards,
Holger
  #9  
Old 5th February 2021, 03:14 AM
Rodrigo Gómez
 
Posts: n/a
Default Re: CBuilder XE6, Nexus 4.5017 No match found for 'TnxDynObjectArray::DynamicArray(int)'

Hello Holger,

Holger Franke wrote:
> Hello Shane,
> thank you for your answer.
>
> Am 20.03.2020 um 16:55 schrieb Shane Stump:
>
> > 2) Open the project group for C Builder Tokyo and make sure the C
> > Builder options are to set build the libraries, etc.

>
> This is probably a stupid question, but it's the first time I've come
> across this problem: Which option do you use for "Export - C/C++"? I
> have set "Create all C++Builder files (also package libs)", but here no
> .obj files are created.
> But I need the .obj files, because otherwise e.g. #pragma link
> "nxseAllEngines" doesn't find the file nxseAllEngines.obj.
>


I'm almost sure you don't really need the obj. Those are included in the
lib/bpi, so you only need to make sure to link with those (the
corresponding package library for that unit) in your project for the
#pragma link "someunit" to work.

The option you mention is correct, and indeed, the objs are not
generated (but the dcu ones are). I have just search for obj files on my
NexusDB folder and there are just ones from the compression that are
used internally by Nexus, I guess.


--
Rodrigo Gómez [NDX]
México, GMT-6
  #10  
Old 8th February 2021, 11:31 PM
Holger Franke
 
Posts: n/a
Default Re: CBuilder XE6, Nexus 4.5017 No match found for

Hello Rodrigo,
I have made quite a progress in the meantime, all my applications can be
created now. :-)

The only remaining problem is the file nxpvPlatformImplementation, which
is always searched as nxpvPlatformImplementation.obj, although
NexusDB450pv200.bpi is included in the project.
I have now created the .obj as an interim solution and it works.
Have you had any similar problems?
However, the nxpvPlatformImplementation is only needed if the
TnxMessageRelayClient is used.
Can you suggest something to do about that?

Best regards,
Holger

Am 04.02.2021 um 17:14 schrieb Rodrigo Gómez:
> Hello Holger,
>
> Holger Franke wrote:
>> Hello Shane,
>> thank you for your answer.
>>
>> Am 20.03.2020 um 16:55 schrieb Shane Stump:
>>
>> *> 2) Open the project group for C Builder Tokyo and make sure the C
>> *> Builder options are to set build the libraries, etc.
>>
>> This is probably a stupid question, but it's the first time I've come
>> across this problem: Which option do you use for "Export - C/C++"? I
>> have set "Create all C++Builder files (also package libs)", but here no
>> .obj files are created.
>> But I need the .obj files, because otherwise e.g. #pragma link
>> "nxseAllEngines" doesn't find the file nxseAllEngines.obj.
>>

>
> I'm almost sure you don't really need the obj. Those are included in the
> lib/bpi, so you only need to make sure to link with those (the
> corresponding package library for that unit) in your project for the
> #pragma link "someunit" to work.
>
> The option you mention is correct, and indeed, the objs are not
> generated (but the dcu ones are). I have just search for obj files on my
> NexusDB folder and there are just ones from the compression that are
> used internally by Nexus, I guess.
>
>




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:23 AM.


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