1

在使用 CoreMIDI 的 iPad 应用程序崩溃后,我收到以下错误(*表示应用程序名称空白):

Dyld Error Message:
 Symbol not found: _MIDINetworkNotificationContactsDidChange
 Referenced from:
/var/mobile/Applications/8F08B78E-929D-4C5A-9F02-08FD5743C17F/***.app/***
 Expected in: /System/Library/Frameworks/CoreMIDI.framework/CoreMIDI
in /var/mobile/Applications/8F08B78E-929D-4C5A-9F02-08FD5743C17F/***.app/***
 Dyld Version: 179.4

当应用程序启动时,我使用监听 MIDI 网络会话

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionDidChange:) name:MIDINetworkNotificationSessionDidChange object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionDidChange:) name:MIDINetworkNotificationContactsDidChange object:nil];

这似乎是导致崩溃的原因。这是我打电话

session = [MIDINetworkSession defaultSession];
session.enabled = YES;
session.connectionPolicy = MIDINetworkConnectionPolicy_Anyone;
MIDIClientCreate(CFSTR("MidiManager"), midiNotifyProc, (void*)self, &midiClientRef);

这种看起来CoreMIDI 库没有包含在构建中。问题是,它作为必需的框架包含在构建中。(并且部署目标设置为 4.2)。我可以在我的 iPad 上很好地运行构建,并且已经在其他用户的 iPad 上进行了广泛的测试,也没有任何问题。此外,这是对现有应用程序的更新,该应用程序已经进行了多次更新,没有任何问题。

我只是仔细检查了我的部署构建,框架肯定包含在内,我刚刚将该构建安装到我的 iPad 上(使用来自商店的不同配置文件),它也可以正常工作。

会发生什么?可能是 Xcode 只是为我发送给 Apple 的那个做了一个糟糕的构建,还是我遗漏了一些明显的东西?我可以将MIDINetworkNotificationSessionDidChange通知符号更改为文字字符串 ( @"MIDINetworkNotificationSessionDidChange") 以同时修复问题吗?

谢谢你的帮助!

4

2 回答 2

1

似乎这是苹果的事情。PGMidi 的主力类的 .mm 包括在顶部:

// For some reason, this is not pulled in by the umbrella header
#import <CoreMIDI/MIDINetworkSession.h>

https://github.com/petegoodliffe/PGMidi

于 2013-07-12T20:32:47.573 回答
0

您是否记得在您的Info.plist. 可能是崩溃报告来自早期版本的 iOS 用户,他们在不应该升级的情况下进行升级。

于 2011-02-18T23:13:54.193 回答