- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有责任为 OSX 10.5 构建一个旧版本的开源库。 (库是 Xerces 2.8。)
库无法在 OSX 10.5 上开箱即用地构建(除其他外)由于使用了已停用的 OSX 函数 CopyCStringToPascal()
。相关代码片段是:
Str255 pasEncodingName;
...
CopyCStringToPascal(cEncodingName, pasEncodingName);
TECGetTextEncodingFromInternetName (&textEncoding, pasEncodingName);
调查表明,CopyCStringToPascal()
确实将 C 字符串转换为 Pascal 风格的字符串(第一个字节提供字符串中字符数的字符串)。因此,从上下文来看,很明显 TECGetTextEncodingFromInternetName()
的第二个参数必须是 Pascal 风格的字符串(尽管我无法在任何来自互联网的文档中找到这一点)。
因为最新版本的开源库 (Xerces 3.1) 成功构建在 OSX 10.5 上,并且其实现都明确定义了函数 CopyCStringToPascal()
(因为它已在 OSX 10.5 中停用) 来创建 Pascal 风格的字符串,并继续使用 TECGetTextEncodingFromInternetName()
(在 OSX 10.5 中尚未停用),我相信这可以确认确实 TECGetTextEncodingFromInternetName()
即使对于 OSX 10.5 也继续需要 Pascal 风格的字符串。
因为当前 OSX 10.5 系统例程仍然需要 Pascal 风格的字符串,所以我很困惑为什么转换为这种必要的 Pascal 字符串的函数 CopyCStringToPascal()
在操作系统 10.5。我写这个问题是为了进一步确认我没有犯错误,只是简单地为 Xerces 2.8 显式定义此函数(并且在与此讨论相关的代码区域中不做任何更改)以使 Xerces 2.8 到使用 OSX 10.5 构建。谢谢。
最佳答案
一共有三个升级路径,都是通过CFString。
Grady Player 已经建议,第一个是使用 CFString 将编码名称转换为 Pascal 字符串。您可以从 CFString 中的编码名称开始(使用 CFSTR
宏);如果没有,您可以从 C 字符串创建一个 CFString,并从 CFString 创建一个 Pascal 字符串。
第二种是使用 CFString 而不是 Text Encoding Conversion Manager 将编码名称转换为编码标识符。 CFString 和 TEC 都使用相同的标识符(比较 CFStringEncodingExt.h 和 TextCommon.h 之间的常量),因此您可以使用 CFStringConvertIANACharSetNameToEncoding
(将编码名称作为 CFString)来获取编码标识符。如果您将编码标识符从 CF 传递给 TEC,这有点作弊,但只要 Apple 认为不适合无缘无故地更改所有常量,它就会起作用。
第三种是使用 CFString 本身进行转换。使用 CFStringCreateWithBytes
从输入创建一个 CFString,并使用 CFStringGetBytes
确定输出长度,然后再次执行转换。该解决方案完全去除了 TEC。
虽然 TEC 本身尚未弃用(但),如果它需要使用或重新发明其他已弃用/删除的 API 才能使其正常工作,这对于基于 TEC 的代码的生命周期来说也是一个不好的迹象。我建议 filing a bug要求在 TEC 中为 TECGetTextEncodingFromInternetName
提供现代替代品;您可以根据对请求的响应来决定要做什么。
关于c++ - 如果 TECGetTextEncodingFromInternetName() 需要 Pascal 风格的字符串,为什么 CopyCStringToPascal() 在 OSX 10.5 中停用了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6713844/
我带着为 OSX 编写 PAM 模块的永无休止的传奇再次回来了。我已经写好了模块。它在使用 ssh 或启动新的终端窗口或 su 时有效。我真正真正想要的只是 ssh 和登录窗口。 我的 PAM 模块在
我们有一个类似于Soundflower的虚拟音频设备驱动程序。该虚拟设备将在声音系统首选项中列出。每当我们的设备在系统偏好设置中被选择时,它就会阻止空闲 sleep 。如果我们将选择切换为默认输出设备
我带着为 OSX 编写 PAM 模块的永无止境的传奇又回来了。我已经编写了模块。它在使用 ssh 或启动新的终端窗口或 su 时有效。我真的、真的、真的想要的只是 ssh 和登录窗口。 我的 PAM
我想在 osx lion 上安装 pyaudio,但我无法做到。每次我尝试使用 pkg 时,它都不会安装任何东西。当我尝试使用 pip 安装它时,出现以下错误(以及许多其他行): lipo: can'
我使用 Java 进行开发已有很长时间了,但直到最近才从 Windows 切换到 OSX。在 Windows 中,我发现一切都足够简单易懂。我可以将 JDK 安装到一个选择的位置,其中还包括一个 JR
运行 Mac OSX 10.7.5 我想在 USB3 外部硬盘上启用 NTFS 并需要 UUID 来执行此操作( http://ntfsonmac.com ),但 diskutil 拒绝给我 UUID
我正在尝试为 Finder 创建服务,但我的应用程序不需要有 UI。好吧,我只需要一个 UI 来请求用户提供更多信息,我的应用程序有时可能需要这些信息。 但是应用程序应该在没有任何 UI 且 Dock
我正在尝试在我的 mac 上使用本地服务器,但它似乎忽略了/etc/hosts 文件中的 localhost 设置。找到了几个页面,其中解决方案是重新安装,并将 localhost 放在/etc/ho
这是一个 OSX 链接器问题。我不认为 OSX(BSD 或 Mach 层)在乎零页有多大,或者它是否真的存在。我认为这是一个工具的事情。但这是我的意见,这就是我问的原因。 -pagezero_size
我正在构建一个将在 iOS/OSX 应用中使用的模块。 客户坚持认为该模块可以在 iOS 和 OSX 上运行。 我需要检查我在 iOS 和 OSX 上使用 UIDevice 时使用的系统版本 FTWD
我尝试在 OSX 10.8.2 中使用 gnuplot,并看到 x11 是不明确或未知的终端类型。一些研究表明 x11 不受支持,我下载了 XQartz,但我仍然收到相同的错误消息。 我使用 expo
我从官方网站下载了 PostgreSQL 并运行了 .dmg 安装程序。之后我下载了 pgadmin3,我确实能够连接到数据库。 当我运行“psql”时,出现以下错误: psql: could not
自从升级到 OSX Catalina 以来,我一直遇到 UnsatisfiedLinkErrors 问题,尝试在 java 下运行 JNI 包装的库,其中包含多个 native 库引用,这些引用在早期
在 OSX 10.6 上使用 make 构建 C++ 项目时,我确定预处理器定义 __LP64__ 似乎始终自动由编译器(即,它没有在任何头文件中定义)(参见 Where is __LP64__ de
我正在尝试将我的 iOS 应用程序移植到 Mac OS X SDK,并且发现我收到以下错误消息:'Collection' redeclared as a different kind of symbo
我一直在 OSX 10.14 中成功使用我的代码生成 Metal 纹理: let textureLoaderOptions = [MTKTextureLoader.Option.origin : MT
我对编码有些陌生,想用 MySQL 后端启动我的第一个 Django 应用程序。我已经在我的 Windows 机器上使用这个设置将近一年了,但它是一个继承的代码库——不幸的是,我从未尝试过从头开始构建
我正在迁移到一台新计算机,同时从雪豹迁移到狮子。 phpunit 似乎没有进行迁移,所以我重新安装了它。然而,pear 的标准安装似乎不适用于我的 php 家庭brew 安装。这是错误: phpuni
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 已关闭 7 年前。 Improve
我在 OSX10.9 上为我的应用程序构建了一个 Java 7 bundle ,一切看起来都很好,但是当我在 OSX 10.7 上尝试它时,它在启动时崩溃,它已经在 10.7.3 和 10.7.5 上
我是一名优秀的程序员,十分优秀!