2015-05-30 27 views
1

我已經reported this directly to the X-SuperObject project,但我想我可以在Stack Overflow上獲得更多的質量幫助。在iOS中添加XSuperObject時項目無法啓動

使用Delphi XE8,iOS模擬器上使用XSuperObject時出現問題(7.1,8.1,8.2和8.3)。所以我開始了一個空的Firemonkey應用程序,開始添加一些在我之前的項目中的東西(此時我不知道問題是什麼)。直到我將最新的XSuperObject和XSuperJSON單元添加到我的應用程序爲止,所有工作都很好。

uses 
    XSuperObject, XSuperJSON; 

當在iPhone模擬器運行時,我得到一個異常:

Project dyld_sim raised exception class EOSError with message 'System Error. Code: 2. No such file or directory.

我沒有代碼,並取得了比添加單位(XSuperObject,XSuperJSON)和其他幾個沒有變化基本控件(面板,按鈕和組合框)。

當我打破,它需要我:

System.SysUtils.RaiseLastOSError - 最後一行raise Error;

...這僅僅是在實際的異常本身提出後,沒有什麼關聯的地方。

因此,我打開了主項目文件,並在第一行Application.Initialize;上放置了一個斷點,但該斷點從未達到。我還在XSuperObject和XSuperJSON的「初始化」中放置了斷點,並且它們都不停止。

Call Stack

一旦我刪除了這兩個單位,一切再次合作。

這裏怎麼回事,我該如何解決?

  • X-超對象版本:拉更新from here之前,爲了報告
  • 德爾福XE8版本22.0.19027.8951(沒有更新)
  • IDE操作系統:Windows 7 SP1(版本6.1,建設7601,64位)
  • 的Mac OS:OS-X 10.10.3
  • 目標操作系統:iPhone模擬器 - 產品iPad Air/iOS的8.2(12D508)

注:以上版本的詳細信息只是一個具體的例子,但我不能讓它在任何iOS設備/版本上工作。

更新:調試系統(第115單元初始化)後,我來了解引發異常的點。在System.RegularExpressionsCore線680 ...

{$IFDEF DYNAMIC_LIB} 
class constructor TPerlRegEx.Create; 
begin 
    if not LoadPCRELib then 
    RaiseLastOSError; //<-- Exception raised here 
end; 
{$ENDIF DYNAMIC_LIB} 

LoadPCRELib內...

{$IFDEF DYNAMIC_LIB} 
function LoadPCRELib: Boolean; 

    function GetProcAddr(const ProcName: MarshaledAString): Pointer; 
    begin 
    dlerror; 
    Result := dlsym(_PCRELib, ProcName); 
    end; 

    procedure SetCallback(const cbName: MarshaledAString; ProcPointer: Pointer); 
    begin 
    Pointer(GetProcAddr(cbName)^) := ProcPointer; 
    end; 

begin 
    Result := True; 
    if _PCRELib = 0 then 
    begin 
    Result := False; 
    _PCRELib := HMODULE(dlopen(PCRELib, RTLD_LAZY)); //<-- Returns 0 (no handle) 
    if _PCRELib <> 0 then 
    begin 
     // Setup the function pointers 
     ... 
     Result := True; 
    end; 
    end; 
end; 
{$ENDIF} 

運行時只使用本機的一個項目,它運行得很好,但。

所以它似乎無法找到/usr/lib/libpcre.dylib,但只有當我使用X-SuperObject。

我已經更新了我所有的環境,包括OS-X,XCode中,iPhone模擬器和SDK鏈接在Delphi IDE(全部刪除並重新創建它們)。我已經驗證SDK和iOS版本完全匹配。但問題仍然存在。

+0

你不能得到一個調用堆棧嗎? –

+0

您需要更多信息。啓動代碼不可能包含調試信息嗎?對於桌面編譯器,您可以選中「使用調試DCU」。移動編譯器是否有相應的版本? –

+0

關鍵是你想知道哪個函數調用會導致引發操作系統錯誤。這在進程啓動代碼中很清楚。所以你需要調試信息。除了桌面編譯器之外,我還沒有任何Delphi編譯器的經驗。 –

回答

3

請安裝iOS 8 Simulator Hotfix,那麼它應該工作的罰款。

+0

嘗試,但它不讓我下載... –

+0

下載在這裏工作得很好。 –

+0

說我沒有授權,我得等一等。 –

相關問題