You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++Builder12 FMX项目Release编译报错:未解析外部符号IdnToAscii

解决C++Builder 12 FMX Release模式下TIPAddress::Create链接错误(IdnToAscii未解析)

问题背景

调用TIPAddress::Create(L"192.168.99.3")这个宽字符直接传入的重载版本时,Release模式编译出现链接错误:

[ilink64 Error] Error: Unresolved external 'IdnToAscii' referenced from C:\SOFT\EMBARCADERO\STUDIO\23.0\LIB\WIN64\RELEASE\RTL.A|System.Net.Socket.o

Debug模式或使用其他Create重载(比如传入UnicodeString)时编译正常。

原因分析

IdnToAscii是Windows系统中处理国际化域名(IDN)转换的API,属于normaliz.lib库。Release模式下,C++Builder的RTL(运行时库)没有自动链接该库,而Debug模式的RTL调试版本默认包含了相关依赖,因此不会触发错误。

解决方案

方案1:手动链接normaliz.lib库

  • 打开项目选项(菜单栏Project > Options)
  • 切换到C++ Linker选项卡
  • 在Additional libraries to link输入框中添加normaliz.lib(确保当前配置是Win64 Release)
  • 保存设置后重新编译

方案2:代码中强制链接库

在调用TIPAddress::Create的cpp文件开头添加编译指令:

#pragma comment(lib, "normaliz.lib")

方案3:改用兼容的重载版本

将宽字符直接传入改为先转换为UnicodeString再调用对应重载,绕开对IdnToAscii的依赖:

System::Net::Socket::TIPAddress::Create(System::UnicodeString(L"192.168.99.3"));

内容的提问来源于stack exchange,提问作者d7d1cd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 08:39:53