两个小问题解决记录:XCode中多Target时CFBundleDisplayName的多语言本地化;用C++写socket程序时编译错误说read和write找不到

Qt for ios 专栏收录该内容
8 篇文章 0 订阅

两个小问题解决记录:XCode中多Target时CFBundleDisplayName的多语言本地化;用C++写socket程序时编译错误说read和write找不到

 

第一个:在XCode同一个项目里创建了两个target一个代表完整版一个代表lite版。按照网上找的方法对完整版的InfoPlist.strings做了本地化,CFBundleDisplayName有中英两个版本,可以成功实现App应用名称的本地化。对lite版,新建了一个InfoPlist-lite.strings文件,也照样弄了en和zh两个版本,但lite版的显示名称就始终是Product Name所指定的字符串,没能实现本地化。

最后经试验,发现这个.strings文件的名称必须得是InfoPlist.strings才能被认,不像Info.plist那个文件可以任意命名只要在Build Settings里设置即可。所以最后是新建了另一个目录专门去放Lite版的InfoPlist.strings文件,解决。

 

第二个:原先用C写了个简单的socket通信程序,gcc编译及运行都没问题。把后缀改成cpp,用g++编译就出错,说对socket进行读写的write和read不能被识别:

error: use of undeclared identifier 'write'

 

error: use of undeclared identifier 'read'

又上网查了一下,终于想起来,C++调用C的函数是应该用extern "C"声明一下的。可能是write和read所在的那个C函数库太老,它自己没有这样声明所以由于C++与C函数命名的不同造成编译器不识别。于是在自己的程序里加上声明就可以了:

 

extern "C" {

    int write(int,void*,int);

    int read(int,void*,int);

};

 

都是些小问题,呵呵。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值