我正在使用assimp libary将模型加载到我的ios应用程序。但是对于某些大型模型文件,对于mobil应用程序而言,加载时间太长。考虑转换时间。我决定在运行时通过工具转换模型。我的主要目标是将此场景写入文件。我有非常基本的c ++经验。首先,我尝试了assimp :: expoerter类。我已将assimp libary编译为导出设置。但是,当我尝试使用导出方法时,却收到此错误消息。No matching member function for call to 'Export'方法在那里,但我不能使用它。scene = (aiScene*) aiImportFile([[openPanel filename] cStringUsingEncoding:[NSString defaultCStringEncoding]], aiPostProccesFlags | aiProcess_Triangulate | aiProcess_FlipUVs | aiProcess_PreTransformVertices | 0 );if (scene) { NSString *pPath = [openPanel filename]; pPath =[NSString stringWithFormat:@"%@%@", pPath, @"_new"]; NSLog(@"New file Path : %@", pPath); Assimp::Exporter *exporter = new Assimp::Exporter(); exportFormatDesc = exporter->GetExportFormatDescription(0); exporter->Export(scene, exportFormatDesc->id, pPath); const aiExportDataBlob *blob = exporter->ExportToBlob(scene, exportFormatDesc->id); size_t blobSize = blob->size; aiString blobName = blob->name;}然后通过阅读Assimp::Exporter Class Reference给我一个使用aiExportDataBlob创建文件的想法。 ExportToBlob返回一个链接的内存缓冲区列表(blob),每个内存缓冲区都引用一个输出文件(在大多数情况下,当然只有一个输出文件,但是这种额外的复杂性是必需的,因为Assimp旨在支持多种文件格式)。 如果您打算使用内存中的数据,则ExportToBlob特别有用。const aiExportDataBlob *blob = exporter->ExportToBlob(scene, exportFormatDesc->id);size_t blobSize = blob->size;aiString blobName = blob->name;但是我不知道将此blob写入文件。任何建议或帮助表示赞赏。 最佳答案 您正在传递NSString *函数在哪里期望const char *。我不熟悉Objective-C,但是我想您想[pPath UTF8String]从NSString获取指向C样式字符数组的指针。(另外,您正在泄漏Exporter:C ++没有垃圾回收。我确定您不想使用new创建它,但是,如果出于某些原因需要,请记住完成后)。关于c++ - 无法通过使用Exporter类导出具有assimp的模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17895776/ 10-10 21:14