我用可可粉将TuiKit导入到我的空白swift应用程序中,该TUIKit是由腾讯用Objective-C编写的imSDK演示。我收到错误:预期为';'在顶级声明符和未知类型名称“ class”之后;你是说'班级'吗?
错误为wav.h的文件,并且有wav.mm文件。这是代码:
文件wav.h
#ifndef WAV_H
#define WAV_H
#include <stdio.h>
class WavWriter {
public:
WavWriter(const char *filename, int sampleRate, int bitsPerSample, int channels);
~WavWriter();
void writeData(const unsigned char* data, int length);
private:
void writeString(const char *str);
void writeInt32(int value);
void writeInt16(int value);
void writeHeader(int length);
FILE *wav;
int dataLength;
int sampleRate;
int bitsPerSample;
int channels;
};
#endif
错误在“ class WavWriter”行上。
wav.mm文件
#import <UIKit/UIKit.h>
#include "wav.h"
void WavWriter::writeString(const char *str) {
fputc(str[0], wav);
fputc(str[1], wav);
fputc(str[2], wav);
fputc(str[3], wav);
}
....
我搜索了两天,却找不到答案。有什么帮助吗?谢谢。
答案 0 :(得分:1)
您的wav.h
文件管理器包含在不是.mm
文件的编译单元中(这意味着“作为Objective-C ++进行编译”,即.m
或{{1 }}文件。
您需要用
包围类定义.c
除非编译的文件是C ++或Objective-C ++,否则#if defined __cplusplus
// the C++ defs
#endif
之间的行将被忽略。
如果您有直接的Objective-C文件,需要知道其类型,则可以使用#ifdef ... #endif
至typedef
或使其不完整的void*
类型
struct