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

两个小问题解决记录: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);

};

 

都是些小问题,呵呵。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fu_Lin_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值