私はこのコードを.mmに持っています
void MyMIDINotifyProc(const MIDINotification *message, void *refCon);
これはこの行に一致します
MIDIClientCreate((CFStringRef)@"MidiMonitor MIDI Client", MyMIDINotifyProc, self, &client);
次に、MyMIDINotifyProcがCoreMIDIから呼び出されます。
ファイル拡張子を.mに変更せずに、Obj-C署名に変換しました。
@interface MidiInput (Private)
-(void) MyMIDINotifyProc:(const MIDINotification *)message reference:(void *)refCon;
@end
これはコンパイルされますが、その行をどうするかわかりませんMIDIClientCreate
。そのまま、を生成し"MyMIDINotifyProc" was not declared in this scope
ます。それはタイプであると思われますvoid *
...そしてドキュメントはそれがA refCon passed back to notifyRefCon
(リンク)であることを100%明確にしています。
この問題はObj-Cだけで解決できますか?C ++のものをCに変換する必要があると思います。その場合は、そのままにしておきます。