0

我的方案是将我的项目从 XE3 移植到 XE6。

当我将调用约定从 C 切换到 stdcall 时,我有这些未解决的外部变量。

从那里开始,UnicodeString()、~UnicodeString()(任何其他)变得无法解析。

我会比较 XE3 和 XE6 之间的 ustring.h。看起来那里有很多变化。

例如:UnicodeString 析构函数。

在 XE3 中,它被标记为:

  __fastcall ~UnicodeString();

在 XE6 中,它被标记为:

  ~UnicodeString();

我将声明修改为:

  __cdecl ~UnicodeString();

这更正了链接器错误。

这是正常的吗,是正确的纠正吗?

要获得问题:

  • 创建一个新的 C++ 包;
  • 创建一个从 TEdit 派生的新组件,并将其添加到包中。
  • 构建和链接 => 一切正常;
  • 而不是去项目选项,并将调用约定切换到stdcall;
  • 构建和链接 => 未解决的外部发生;

提前感谢您的回答。

N.福廷

4

1 回答 1

0

您是否碰巧在 XE6 上使用 32 位 XE3 和 64 位?如果是这样,64 位通常不支持多个调用约定,因此几乎所有内容都是 cdecl。这个是正常的

于 2014-05-10T21:02:11.283 回答