在objective-c中使用ARC转换C ++类型

时间:2013-11-11 08:02:13

标签: c++ ios objective-c casting

遇到以下情况:

我使用的是第三方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]);

但它没有用。有解决方案吗?

1 个答案:

答案 0 :(得分:1)

找到解决方案:

使用arc进行编译更严格,并且在尝试将const char *转换为char *时会出错。

解决方案是创建第二个字符串char *并strcpy那里[@“name”UTF8String]

 char str2[1024] = {0};
 strcpy(str2, [@"name" UTF8String]);

 Function ((lib_l_fname)str2);

按预期工作