Iphone 调用C++;来自objective-c代码的方法
我有一些C类导入到我的应用程序中。因此,我的.H.O.M.ObjultC++类中有一些.h和.c++类。这样可以吗?或者我需要将它们编译成一个.a以便使用它们吗 假设我做了所有的事情,我想把这个C++方法叫做< /P>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
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++。