Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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 Mac上的Sketchup API_Macos_Api_Dylib_Sketchup - Fatal编程技术网

Macos Mac上的Sketchup API

Macos Mac上的Sketchup API,macos,api,dylib,sketchup,Macos,Api,Dylib,Sketchup,我无法将CLI工具链接到slapi.framework。它可以构建,链接到框架。我添加了一个运行脚本构建阶段来复制可执行文件附近的框架,并更改可执行文件的@rpath: set -x DEST="$TARGET_BUILD_DIR" mkdir -p "$DEST/Frameworks" ln -fs "MY_PLACE/sdk/google-sketchup/macosx/slapi.framework" "$DEST/Frameworks" install_name_tool -change

我无法将CLI工具链接到slapi.framework。它可以构建,链接到框架。我添加了一个运行脚本构建阶段来复制可执行文件附近的框架,并更改可执行文件的@rpath:

set -x
DEST="$TARGET_BUILD_DIR"
mkdir -p "$DEST/Frameworks"
ln -fs "MY_PLACE/sdk/google-sketchup/macosx/slapi.framework" "$DEST/Frameworks"
install_name_tool -change @rpath/slapi.framework/Versions/Current/slapi @executable_path/Frameworks/slapi.framework/Versions/Current/slapi "$DEST/$TARGET_NAME"
当我运行可执行文件时,我得到:

bash-3.2$ ./test_slapi
dyld: Library not loaded: @executable_path/../Frameworks/libCommonUnits.dylib
  Referenced from: /Users/gdw/Documents/dev/code/test_slapi/Debug/./Frameworks/slapi.framework/Versions/Current/slapi
  Reason: image not found
Trace/BPT trap: 5

不要像现在这样更改slapi的安装名称。相反,您应该将slapi.framework的Libraries目录添加到程序的“运行路径搜索路径”中

但框架的打包也存在问题。请在终端中尝试以下命令:

cd slapi.framework/Versions/Current/Libraries
install_name_tool -id @rpath/libCommonUnits.dylib libCommonUnits.dylib
install_name_tool -change @executable_path/../Frameworks/libCommonUtils.dylib @rpath/libCommonUtils.dylib libCommonUnits.dylib
install_name_tool -change @executable_path/../Frameworks/libCommonGeometry.dylib @rpath/libCommonGeometry.dylib libCommonUnits.dylib

这将修复libCommonUnits.dylib的安装名称。

谢谢您的帮助。。。因此,更改slapi rpath是很常见的

我做了一个外壳来改变一切。。。 ! /垃圾箱/垃圾箱 对于d in./Versions/Current/slapi./Versions/Current/Libraries/*.dylib;做 对于$(otool-L“$d”| grep”@executable_path/。/Frameworks/“| cut-f1-d'(');do)中的p 回声“$p” 安装\u name\u工具-id@rpath/$(basename“$p”)“$p” 安装_name_工具-更改“$p”@rpath/$(basename“$p”)“$d” 完成

完成 现在,当我运行该工具时,我不再有链接错误,而是一条非法指令:4

调用堆栈显示: _xpc_运行时_初始化_一次(线程1:EXE_BAD_指令(代码=EXC_i386_INVOP,子代码=0x0)
dyldbootstrap::start(macho_头常量*,in,char常量**,long,macho_头常量*,unsigned long*)

您真的不必修改slapi中的安装名称。出于这个原因,它使用了rpath,但在本例中,其中一个Dylib没有正确的安装名称。上面的代码旨在解决这个问题。嗯。我不知道是什么原因造成的。您的程序是64位吗?目前,slapi.framework仅为32位。错误消息显示在命令行是“非法指令:4”,但在日志中有“XPC域创建失败:进程不在继承的沙盒中”…听起来更好,解决方案现在非常接近!好的,这是因为此CLI工具将作为已签名和沙盒应用程序的子进程运行;因此,它将作为一个授权文件运行,其中com.apple.security.inherit设置为YES。因此,此工具无法直接在终端上运行。。。