我在Xcode中使用info.plist來設置環境變量DYLD_LIBRARY_PATH和DYLD_FRAMEWORK_PATH。info.plist中的環境變量不起作用
我設置DYLD_LIBRARY_PATH到
$ CONTENTS_FOLDER_PATH /運行/ 1.1.0:$ CONTENTS_FOLDER_PATH /模塊/ tiapp/1.1.0:$ CONTENTS_FOLDER_PATH /模塊/ ticodec/1.1.0:$ CONTENTS_FOLDER_PATH /模塊/ tidatabase /1.1.0:$CONTENTS_FOLDER_PATH/modules/tifilesystem/1.1.0:$CONTENTS_FOLDER_PATH/modules/timedia/1.1.0:$CONTENTS_FOLDER_PATH/modules/timonkey/1.1.0:$CONTENTS_FOLDER_PATH/modules/tinetwork/1.1.0:$ CONTENTS_FOLDER_PATH /模塊/ tiplatform/1.1.0:$ CONTENTS_FOLDER_PATH /模塊/ tiprocess/1.1.0:$ CONTENTS_FOLDER_PATH /模塊/ tiui/1.1.0:$ CONTENTS_FOLDER_PATH /模塊/ tiworker/1.1.0
和
DYLD_FRAMEWORK_PATH到
$ CONTENTS_FOLDER_PATH /運行/ 1.1.0
當我雙擊我的.app文件夾的dlopen無法找到任何我的名爲.dylib了在文件夾上面提到的。
如果我採用相同的確切變量和路徑,並將它們放在Xcode中的可執行參數中,一切正常,但只有當我通過Xcode運行軟件,並且在單擊.app時需要一切工作。夾。
我在做什麼錯誤的info.plist?它不喜歡$ CONTENTS_FOLDER_PATH嗎?它需要一個不同的分隔符嗎?爲什麼相同的參數在可執行參數中工作,但不在info.plist文件中?
在此先感謝。
我使用的是Xcode 3,並且我將info.plist變量設置爲「Environment Variables」,實際上是將info.plist顯示爲LSEnvironment。我可以在我的包中找到我的每個.dylib的直接路徑,但問題在於.dylibs本身依賴於其他.dylib,所以當我進行dlopen調用並且加載.dylib使用環境變量DYLD_LIBRARY_PATH來查找路徑到它依賴的其他.dylibs,所以我需要在應用程序打開之前將路徑從我的包附加到DYLD_LIBRARY_PATH變量。我需要這個工作,以便應用程序也可以。 –
類似於CONTENTS_FOLDER_PATH的Xcode構建變量在運行時不可用於啓動服務。我會開始尋求一個更簡單的鏈接系統,理想情況下是一個靜態鏈接系統。否則,你需要在你的代碼中設置DYLD_LIBRARY_PATH,如果這是不可能的,你將需要建立一個助手可執行文件,根據你的包的位置爲你設置它,然後啓動你的真實可執行文件。所有這些都是過於複雜的方法,靜態鏈接是強烈的首選。 –
我不認爲靜態鏈接是我現在的選擇。謝謝你的建議。事實上,當前的設計是讓應用程序的第一次運行設置環境變量,然後再次啓動相同的可執行文件,然後設置環境變量,就像您的構建幫助者的建議。我試圖避免這種方法,並希望只執行一次應用程序,以便讓每個人都更輕鬆。 –