My senario is to port my projects from XE3 to XE6.
I having these unresolved extrenals when I'm switching calling convention from C to stdcall.
Starting from there, UnicodeString(), ~UnicodeString() (any other) become unresolved.
I'd compare ustring.h between XE3 and XE6. Looks like there are many changes there.
For example : UnicodeString destructor.
In XE3, it's decalred as :
__fastcall ~UnicodeString();
In XE6, it's decalred as :
~UnicodeString();
I than modified the declaration, to be :
__cdecl ~UnicodeString();
This correct the linker error.
Is this normal, is it the right correction to do ?
To obtain the problem :
- create a new C++ package;
- create a new component, derived from TEdit, and add it to the package.
- build and link => all is OK;
- than go to project options, and switch calling convention to stdcall;
- build and link => unresolved external occurs;
Thanks in advance for your answers.
N. Fortin
Do you happen to use 32-bit XE3 and 64-bit on XE6? If so, 64-bit generally doesn't support multiple calling conventions, and thus nearly everything is cdecl. This is normal