【问题标题】:Delphi Berlin EObjectiveC with message 'ObjectiveC class CTCallCenter could not be foundDelphi Berlin EObjectiveC 与消息'ObjectiveC 类 CTCallCenter 找不到
【发布时间】:2016-06-07 07:02:37
【问题描述】:

我正在使用 Delphi 10.1 Berlin

只需在 IOS 电话上运行 PhoneDialer 示例
Embarcadero\Studio\18.0\Samples\Object Pascal\Mobile Snippets\PhoneDialer

应用程序在启动时崩溃 如果我在调试模式下运行,我会收到此错误


调试器异常通知

Project PhoneDialer 引发异常类 EObjectiveC,并带有消息“找不到 ObjectiveC 类 CTCallCenter”。


它似乎发生在
FMX.PhoneDialer.iOS 单元

constructor TCocoaPhoneDialerService.Create;
begin
  FCallCenter := TCTCallCenter.Create; // <<<----- blowing up here
  FCallCenter.retain;
  FCallCenter.setCallEventHandler(DoChangeCallState);
end;

有人有什么建议吗?
如果您可以让示例工作,您能否提供实现它所需的代码:)

附带说明 - 运行相同示例的 Delphi 10.0 Seattle 似乎运行良好

【问题讨论】:

  • 尝试查看 Tools \ Options \ Environment Options \ SDK Manager 并与 Delphi 10.0 Seattle 进行比较
  • @Passella 你能让样品在柏林工作吗?我在 SDK 管理器中做了一个快速比较,它们都使用 iPhoneOS9.3.sdk,柏林的一个确实有一些额外的包含路径“usr/lib/clang/7.0.2”和“usr/lib/clang/7.3. 0"
  • 对不起,我这里没有柏林。我想可能是这样

标签: ios objective-c delphi firemonkey delphi-10.1-berlin


【解决方案1】:

此解决方法来自 Sergey Krasilnikov
如果你有登录名,你可以在这里看到它https://quality.embarcadero.com/browse/RSP-15128
我还没有尝试过确认它是否有效


复制 iOSapi.CoreTelephony.pas C:\Program Files (x86)\Embarcadero\Studio\18.0\source\rtl\ios
到您的项目文件夹

修改如下:

implementation

uses
  Posix.Dlfcn;

var
  CoreTelephonyModule: THandle;

const
  CoreTelephonyFwk: string =     '/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony';

initialization
  CoreTelephonyModule := dlopen(MarshaledAString(libCoreTelephony), RTLD_LAZY);

finalization
  dlclose(CoreTelephonyModule);

end.

再次构建项目

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-11
    • 2017-02-10
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 2016-12-13
    相关资源
    最近更新 更多