我在 .mm 中有此代码
void MyMIDINotifyProc(const MIDINotification *message, void *refCon);
这条线
MIDIClientCreate((CFStringRef)@"MidiMonitor MIDI Client", MyMIDINotifyProc, self, &client);
然后从 CoreMIDI 调用 MyMIDINotifyProc。
在不将文件扩展名更改为 .m 的情况下,我将其转换为 Obj-C 签名:
@interface MidiInput (Private)
-(void) MyMIDINotifyProc:(const MIDINotification *)message reference:(void *)refCon;
@end
可以编译,但是我不知道如何处理该MIDIClientCreate
行。照原样,它产生"MyMIDINotifyProc" was not declared in this scope
. 它应该是类型void *
......并且文档100%清楚它是A refCon passed back to notifyRefCon
(链接)。
这个问题可以单独在 Obj-C 中解决吗?我想我必须将 C++ 的东西翻译成 C,在这种情况下我就别管它了。