Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos info.plist的LSEnvironment部分无效。_Macos_Cocoa_Code Injection_Macos Carbon_Dyld - Fatal编程技术网

Macos info.plist的LSEnvironment部分无效。

Macos info.plist的LSEnvironment部分无效。,macos,cocoa,code-injection,macos-carbon,dyld,Macos,Cocoa,Code Injection,Macos Carbon,Dyld,我编写了一个动态库,通过设置名为DYLD_INSERT_LIBRARIES的环境变量将其加载到一些目标应用程序中,当应用程序通过以下命令从终端执行时,dylib加载和工作正常: $ export DYLD_INSERT_LIBRARIES=/path/to/mylib.dylib $ /path/to/application.app/Contents/MacOS/executable 然后我通过编辑info.plist文件中的LSEnvironment部分来设置DYLD_INSERT_库的值。

我编写了一个动态库,通过设置名为DYLD_INSERT_LIBRARIES的环境变量将其加载到一些目标应用程序中,当应用程序通过以下命令从终端执行时,dylib加载和工作正常:

$ export DYLD_INSERT_LIBRARIES=/path/to/mylib.dylib
$ /path/to/application.app/Contents/MacOS/executable
然后我通过编辑info.plist文件中的LSEnvironment部分来设置DYLD_INSERT_库的值。 一些苹果标准应用程序(如TextEdit和Calculator)成功加载了我的库,但此设置对InDesign、Photoshop等应用程序无效

为什么不为某些应用程序设置环境变量? 有人对此有想法吗?
谢谢。

由于您没有进一步说明,我假设您也通过终端启动Photoshop等(?) 这使得在LSEnvironment中设置的这些环境变量无效,因为它们仅被使用 通过“启动服务”启动的流程


如果您通过“启动服务”启动它,您是否检查了程序是否仅通过dlclose()卸载了库?…

我从Finder启动它。“您是否检查过您的库不是由程序通过dlclose()简单卸载的?”:我的库从未加载。我在这方面也有问题。有人找到解决办法了吗?你找到解释了吗?我也在挣扎。不,我没有找到任何解释。我现在使用一个代理可执行文件将我的lib注入应用程序。当进程启动时需要注入lib时,这是否有效?你能给我一个链接让我能找到更多信息吗?不,在OSX中启动进程后可能无法注入lib,我将我的代理exe复制到bundle dir(./Content/MacOS/)中,并将main exe重命名为InDesign_org,将代理重命名为InDesign,现在当用户从finder执行InDesign时,我的代理将被执行,它设置了环境变量DYLD\u INSERT\u库,然后执行InDesign\u org。