Xcode 4、dylib 和 install_name_tool

2024-02-14

我正在尝试让 dylib 在我的 OSX 项目中工作。

我一直在阅读一些示例,特别是这个:Xcode 4 添加 dylib https://stackoverflow.com/questions/6801709/xcode-4-adding-dylib

但我仍然无法让它发挥作用。

以下是我执行的步骤:

  1. 将testing.1.dylib复制到我的Xcode项目文件夹中。
  2. Ran sudo install_name_tool -id @executable_path/../Frameworks/testing.1.dylib testing.1.dylib
  3. Ran: otool -L testing.1.dylib并收到以下信息:

    测试.1.dylib:
    @executable_path/../Frameworks/testing.1.dylib(兼容版本2.0.0,当前版本2.0.0)
    /usr/lib/libSystem.B.dylib(兼容版本1.0.0,当前版本159.1.0)

  4. 添加了testing.1.dylib作为项目的框架。 (使用带有库选项的链接包)。

  5. 此时,当我编译testing1.dylib时,并没有按照我的预期将testing1.dylib复制到.App/Framework中,因此我手动创建Framework路径并将testing.1.dylib复制到其中: a) mkdir -p testing.app/Contents/Frameworks b)cptesting.1.dylibtesting.app/Contents/Frameworks
  6. 在 Xcode 中我更新了Runtime Search Paths目标和项目均为:@executable_path/../Frameworks。

现在,我将 test.app 复制到单独的新安装的计算机上并尝试运行它。我收到以下错误:

dyld:未加载库:/user/local/lib/testing1.dylib 引用自:/Users/me/testing.app/MacOS/./testing 原因:找不到图片

我缺少什么?

注意:运行 install_name_tool 时,我需要使用 sudo 否则会出现以下错误:

install_name_tool:无法打开输入文件:testing.1.dylib 进行写入(权限被拒绝) install_name_tool:无法在文件:testing.1.dylib 中查找偏移量:0 进行写入(错误文件描述符) install_name_tool:无法在文件中写入新标头:testing.1.dylib(错误文件描述符) install_name_tool:无法关闭写入输入文件:testing.1.dylib(错误文件描述符)


您不需要将库复制到项目中。

你不应该需要使用sudo更改您拥有的文件的安装名称。您不拥有该库文件吗?也许您在某些第三方项目上执行了“sudo make install”?只是不要安装它并链接到构建目录中的那个。如果您正在构建此库,那么您应该在使用链接命令的命令行选项构建它时设置其安装名称。

预计将库添加到目标会导致其链接,但不会自动导致其被复制。您也可以创建一个复制文件构建阶段并将库添加到其中。

您不需要设置运行路径搜索路径,除非您使用@rpath基于安装名称。

我怀疑 Xcode 实际上正在链接您复制的库from在步骤 1 中,而不是您制作的副本以及您随后修改的安装名称。构建记录中的实际链接命令说什么?您在步骤 1 中从哪里复制了库?如果它来自 /usr/lib 或 /usr/local/lib,那么 Xcode 可能会对其进行链接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xcode 4、dylib 和 install_name_tool 的相关文章

随机推荐

  • 在 Macos High Sierra 上创建并绑定套接字

    我在 Hight Sierra 应用程序中创建套接字时遇到严重且奇怪的问题 如果我创建命令行工具 一切都好 我创建套接字 绑定套接字 但是如果我尝试创建 Cocoa 应用程序 我无法绑定我的套接字 如果我在Cocoa App中使用CFSoc
  • C++ 风格:Stroustrup 指针星号的放置

    有谁知道为什么Stroustrup的风格是指针的放置如下 具体来说 Stroustrup 就此事提供了哪些指导 int p vs int p 因为声明多个变量需要每个变量名称旁边加星号 这会导致 int p x vs int p x 在 K
  • 增加字符串值

    如何增加字符串值 例如 string RECONCILIATION COUNT if thing happens RECONCILIATION COUNT 这通常不起作用 因为不可能以与 int 值相同的方式递增字符串变量 RECONCIL
  • 棋盘游戏胜局 - 搜索算法

    我正在寻找可能有效的算法来检测在 19x19 棋盘上玩的五子棋 五连棋 游戏中的 获胜 情况 当其中一名玩家设法连续获得五颗且不超过五颗 石子 水平 对角线或垂直 时 就会出现获胜情况 我可以轻松访问以下数据 两个玩家之前的动作 石头 存储
  • 如何在选择查询(MySQL)中仅消除连续重复项而不是所有重复项?

    我有一个这样的表 01 Jul 17 100 02 Jul 17 100 03 Jul 17 300 04 Jul 17 300 05 Jul 17 500 06 Jul 17 500 07 Jul 17 300 08 Jul 17 400
  • 如何检测隐藏字段篡改?

    在我的网络应用程序的一种形式上 我有一个隐藏字段 出于安全原因 我需要保护它免遭篡改 我正在尝试提出一个解决方案 通过该解决方案 我可以检测隐藏字段的值是否已更改 并做出适当的反应 即使用通用的 出现问题 请重试 错误消息 该解决方案应该足
  • 对成员 'tableView(_:numberOfRowsInSection:)' 的引用不明确 为什么会出现此错误?

    这是我的代码 其中出现错误 错误出现在第 3 行 if let indexpath override func prepare for segue UIStoryboardSegue sender Any if segue identifi
  • 像一维一样循环二维子图

    我正在尝试使用子图绘制许多数据 并且没有遇到麻烦 但我想知道是否有一种方便的方法可以做到这一点 下面是示例代码 import numpy as np import math import matplotlib pyplot as plt q
  • spectj可以向java.lang.String添加方法吗

    我读过aspectj的一些文章 我知道它可以增强类 这很有吸引力 我有一个非常愚蠢的问题 我找不到明确的答案 spectj可以向java lang String添加方法吗 或者类似的问题 如果我无法获取某些类的源代码 我可以通过aspect
  • Kubernetes 集群中的 DisallowedHost Django 部署:无效的 HTTP_HOST 标头

    我在 Azure Kubernetes 集群中为前端服务部署了 Django 并进行了一些基本配置 但请注意 同样的问题也适用于我本地的 Minikube 集群 我从远程容器注册表中获取 Django 前端容器映像并公开port 8010
  • 检测数据何时发生变化

    好吧 故事是这样的 我有很多特定格式的文件 相当大 大约 25GB 需要导入到数据存储中 这些文件不断更新数据 有时是新的 有时是相同的数据 我正在尝试找出一种算法来检测文件中特定行是否发生更改 以便最大限度地减少更新数据库所花费的时间 目
  • PHP date - 获取本地语言的月份名称

    我有这部分功能 它给我英文月份的名称 我如何将它们翻译成我的当地语言 塞尔维亚语 month name date F mktime 0 0 0 i Where i是月份的数字 值 1 12 也可以看看PHP mktime https www
  • 用于旋转相机意图捕获的图像的代码在 Android 中不起作用

    我有一个问题 使用相机意图捕获的图像被旋转 我在为什么使用相机意图捕获的图像在某些 Android 设备上会旋转 https stackoverflow com questions 14066038 why image captured u
  • 当选择标签样式属性设置为 display: none; 时如何从下拉列表中检索值在 python 硒中

    我正在尝试废弃一个网站的下拉类别的所有组合 但是 选项的文本属性仅为空白 尽管在检查时 我可以看到每个选项都存在文本 from selenium import webdriver from selenium webdriver suppor
  • 如何使用 .Mdf 文件部署 C# exe?

    我已经创建了 Windows 应用程序 并且创建了本地数据库并添加了用户名和密码 如果用户名和密码正确 那么我必须打开代码 我已经生成了一个 Setup Msi 但是当我尝试在我的机器中安装时它工作正常 但是当我尝试在其他没有 Net或任何
  • 为什么 SQL Server '=' 比较器不区分大小写?

    我刚刚意识到 SQL Server 比较器在用于文本比较时不区分大小写 我对这个功能有几个疑问 这对于所有数据库都相同还是特定于 SQL Server 我一直在使用lower函数以确保文本比较到目前为止不敏感 遵循同样的做法仍然是一个好主意
  • Slim - 如何发送带有“Content-Type:application/json”标头的响应?

    我有这个简单的 REST api 用 Slim 完成
  • 通过Ajax将画布图像数据(Uint8ClampedArray)发送到Flask Server

    我想通过 AJAX 将 HTML5 上的图像数据发送到 Flask 服务器后端 我从使用中提取相关图像数据context getImageData a b c d 并且理想情况下希望能够在我的 Flask 后端以 numpy 数组的形式访问
  • 如何使 cocos2d 精灵每秒缩放(以获得脉动效果)?

    我想让精灵每秒缩放一次 使其看起来像是鼓起来并脉动 我怎样才能做到这一点 由于之前的帖子包含语法错误 更准确地说 我发布了工作代码 CCSprite sprite create the sprite id scaleUpAction CCE
  • Xcode 4、dylib 和 install_name_tool

    我正在尝试让 dylib 在我的 OSX 项目中工作 我一直在阅读一些示例 特别是这个 Xcode 4 添加 dylib https stackoverflow com questions 6801709 xcode 4 adding dy