我正在尝试使用Xcode 3.1.3从我的Cocoa Touch iPhone应用程序中使用C ++库(CLucene)。当我在iPhone模拟器中运行时,一切正常,但是当我在设备上运行时,事情会变得奇怪。似乎指针没有从Objective-C ++代码(我的应用程序)正确传递到C ++库(CLucene)。
在设备上调试app时,我可以看到作为C ++函数参数传递的const char *变量从Objective-C ++中的0x12546c0变为C ++中的0x4e。由于0x4e未指向有效的const char *,因此C ++代码失败。在模拟器中进行调试时不会发生这种情况。
我正在将C ++库直接编译到应用程序中,而不是链接到静态或动态库。
非常感谢任何帮助。
答案 0 :(得分:4)
在项目的构建设置中禁用“Compile for Thumb”可以解决问题。
答案 1 :(得分:0)
在iPhone应用程序中使用C ++代码应该没有问题(我一直这样做)。
指针只是作为指针传递而没有任何解释 你确定Objective-C ++对象是一个'const char *'而不是在运行时动态转换(错误地)转换为'const char *'的其他类型吗?