1

偶然发现以下情况:

我使用 3-rd 方 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 不允许将 Objective-C 指针转换为 lib_l_fname (aka char*)”

我试过了

  Function ([@"name" UTF8String]);

但它没有用。有解决办法吗?

4

1 回答 1

1

找到了解决方案:

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

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

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

 Function ((lib_l_fname)str2);

按预期工作

于 2013-11-11T08:33:12.687 回答