遇到以下情况:
我使用的是第三方C ++库。
lib的标题:
#define lib_fname char
typedef lib_fname* lib_l_fname;
Function(lib_l_fname name);
我的代码(我需要调用那个函数):
Function ((lib_l_fname)[@"name" UTF8String]);
这在非ARC项目中有效,但是在ARC中我有一个错误 - “不允许使用ARC”将一个指向lib_l_fname(也就是char *)的Objective-C指针强制转换“
我试过
Function ([@"name" UTF8String]);
但它没有用。有解决方案吗?
答案 0 :(得分:1)
找到解决方案:
使用arc进行编译更严格,并且在尝试将const char *转换为char *时会出错。
解决方案是创建第二个字符串char *并strcpy那里[@“name”UTF8String]
char str2[1024] = {0};
strcpy(str2, [@"name" UTF8String]);
Function ((lib_l_fname)str2);
按预期工作