Linker XE6 Ansi/Unicode字符串链接器错误(未解析的外部)
我的senario将把我的项目从XE3移植到XE6 当我将调用约定从C切换到stdcall时,我遇到了这些未解析的外部变量 从那里开始,UnicodeString(),~UnicodeString()(任何其他)将无法解析 我会比较XE3和XE6之间的ustring.h。看起来有很多变化 例如:Unicode析构函数 在XE3中,其贴花为:Linker XE6 Ansi/Unicode字符串链接器错误(未解析的外部),linker,unicode-string,ansistring,c++builder-xe6,Linker,Unicode String,Ansistring,C++builder Xe6,我的senario将把我的项目从XE3移植到XE6 当我将调用约定从C切换到stdcall时,我遇到了这些未解析的外部变量 从那里开始,UnicodeString(),~UnicodeString()(任何其他)将无法解析 我会比较XE3和XE6之间的ustring.h。看起来有很多变化 例如:Unicode析构函数 在XE3中,其贴花为: __fastcall ~UnicodeString(); ~UnicodeString(); 在XE6中,其贴花为: __fastcall
__fastcall ~UnicodeString();
~UnicodeString();
在XE6中,其贴花为:
__fastcall ~UnicodeString();
~UnicodeString();
我将声明修改为:
__cdecl ~UnicodeString();
这将更正链接器错误
这正常吗?这是正确的纠正方法吗
要获得问题,请执行以下操作:
-
< LI>创建一个新的C++包;李>
- 创建从TEdit派生的新组件,并将其添加到 包裹
- 构建和链接=>一切正常李>
- 然后转到项目选项,并将调用约定切换到stdcall李>
- 生成和链接=>发生未解析的外部事件李>
N.Fortin您是否碰巧使用32位XE3和64位XE6?如果是这样,64位通常不支持多个调用约定,因此几乎所有内容都是cdecl。这是正常的我建议您将其作为一个回归错误提交给。因为兼容性类,比如<>代码> UnoDeSoScord<代码>,在预编译的RTL中实现,所以头文件需要匹配实际的调用约定,否则您会得到这些链接器错误,而不是C++编译器想要使用的。早期版本强制实现了平等,看起来有人在XE6I中搞错了。我已经为您提交了一份质量控制报告:。嗯,我就是这么想的!。谢谢你的QC日志,雷米。你还是那个!!我正在对产品进行评估,我正在与Embarcadero的一位卖家和一位工程师联系。我会把新的QC推荐给他们。