Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 调用C++;来自objective-c代码的方法_Iphone_Objective C - Fatal编程技术网

Iphone 调用C++;来自objective-c代码的方法

Iphone 调用C++;来自objective-c代码的方法,iphone,objective-c,Iphone,Objective C,我有一些C类导入到我的应用程序中。因此,我的.H.O.M.ObjultC++类中有一些.h和.c++类。这样可以吗?或者我需要将它们编译成一个.a以便使用它们吗 假设我做了所有的事情,我想把这个C++方法叫做< /P> mms_t *mms_connect (mms_io_t *io, void *data, const char *url, const char *host, const char *uri,const char *query,int pport, int bandwidth

我有一些C类导入到我的应用程序中。因此,我的.H.O.M.ObjultC++类中有一些.h和.c++类。这样可以吗?或者我需要将它们编译成一个.a以便使用它们吗

假设我做了所有的事情,我想把这个C++方法叫做< /P>
mms_t *mms_connect (mms_io_t *io, void *data, const char *url, const char *host, const char *uri,const  char *query,int pport, int bandwidth) 
所以这个方法返回一个名为mms\u t的结构

它需要我传入一些字符*。 在Objective-C中,我可以在这里传递什么?这种语言中有char*?我猜我不能在它的位置传递一个字符串

我从一段C代码中看到

    strTemp = @"mms://123.30.49.85/htv2";

char *g_tcUrl = new char[[strTemp length] + 1];
是否使用了“new”

上面代码的objective c等价物是什么

非常感谢,,
-代码

首先,您必须将Objective-C文件的类型更改为Objective-C++。您可以通过将文件扩展名更改为
.mm
或使用“文件信息”面板(ctrl单击,获取信息)来完成此操作

对于
char*
,可以使用
UTF8String
cStringUsingEncoding:
将NSString转换为C字符串,如下所示:

NSString *foo = @"Foo";
char *fooascii = [foo cStringUsingEncoding:NSASCIIStringEncoding];
char *fooutf8 = [foo UTF8String];

<>你可以自由地调用目标C和C++,实际上把它们混合在一起。您所需要做的就是在适当的地方转换类型。你需要你的代码文件。.MM(技术上是目标C++文件)。不。M文件包含C++头文件。

要将目标C字符串转换为C样式字符串,请执行以下操作:

const char *cString = [strTemp cStringUsingEncoding:NSUTF8StringEncoding];

小问题:我们还需要释放FooasCII和FoUff8吗?简短的回答:不,但是你应该明确地阅读文档:NString的长度不等于字符串的字节数。你似乎对C、C++和ObjuleC的区别感到非常困惑。C语言是语言,Objtovi-C是C上的一组扩展。(C代码也是Objul-C代码),C++是C语言的一种不同语言。扩展<代码> C <代码>通常表示C文件,而不是C++。