XE6 Ansi/Unicode-String Linker Errors (Unresolved Externals)

306 Views Asked by At

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

1

There are 1 best solutions below

0
On

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