让 MATLAB Mex 搜索特定文件夹中的库

2024-01-05

我创建了一个 mex 函数,它依赖于一个依赖于另一个库的库。当我执行该函数时,它在运行时输出以下错误:

Invalid MEX-file
...
Library not loaded: /usr/local/lib/libgomp.1.dylib

我的计算机上确实有这个库,但它位于usr/local/gfortran/lib

所以我尝试了这个:

setenv('DYLD_LIBRARY_PATH', '/usr/local/gfortran/lib');

但这根本不能解决问题。我使用的是 MacOS Sierra 10.12.6。如何让 MATLAB 搜索该特定文件夹?


MacOS 在如何搜索动态库(== 共享对象)方面与其他操作系统的工作方式不同。有几件事需要知道:

  1. Each .dylib文件有一个“安装名称”。这是嵌入在文件中的字符串,告诉链接器在哪里可以找到它。当您将库/可执行文件/MEX 文件链接到.dylib,“安装名称”被存储并在运行时用于定位库。也就是说,它不是存储文件的当前位置,而是它报告的应该找到该文件的位置。

  2. “安装名称”可以以“@rpath”开头,这表示相对路径。

  3. 链接到的可执行文件/库/MEX 文件.dylib可以指定在其中搜索依赖项的替代目录。这相当于rpath在Linux下。这些目录可以是绝对路径,也可以以“@executable_path”或“@loader_path”开头,表示相对路径。 “@executable_path”是可执行文件的目录(如果是 MEX 文件,则为 MATLAB 二进制文件),“@loader_path”是尝试加载库的二进制文件的路径(例如 MEX 文件)。

以下是有关这些主题的更多信息:https://www.mikeash.com/pyblog/friday-qa-2009-11-06-linking-and-install-names.html https://www.mikeash.com/pyblog/friday-qa-2009-11-06-linking-and-install-names.html

您可以使用链接器标志来设置正确的安装名称和 rpath 等,但您也可以使用install_name_tool http://www.manpagez.com/man/1/install_name_tool/编程到链接后更改这些内容 https://matthew-brett.github.io/docosx/mac_runtime_link.html。对于您的情况来说,这可能是最简单的。

在您的情况下,您可以使用类似的方法来更改 MEX 文件查找依赖库的位置:

install_name_tool -change /usr/local/lib/libgomp.1.dylib usr/local/gfortran/lib/libgomp.1.dylib mexfile.mexmaci64

(代替mexfile.mexmaci64与您的 MEX 文件的名称)。

如果您想使用相对路径,例如移动依赖项libgomp.1.dylib到取决于 MEX 文件位置的路径,您可以这样做:

install_name_tool -change /usr/local/lib/libgomp.1.dylib @rpath/libgomp.1.dylib mexfile.mexmaci64
install_name_tool -add_rpath @loader_path/../lib mexfile.mexmaci64

or

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

让 MATLAB Mex 搜索特定文件夹中的库 的相关文章

  • 未加载库:@rpath/libopenblasp-r0.2.19.dylib

    我应该如何解决这个问题 Monas MacBook Pro 02 02 mona python Python 3 6 1 Anaconda custom x86 64 default May 11 2017 13 04 09 GCC 4 2
  • 如何使用 Objective-C 加载 dylib 或 .a(静态库)文件?

    C 代码 Windows Assembly assembly Assembly LoadFrom AssemblyPath System Type objTypes assembly GetTypes Type libType null 我
  • 并行磁盘 I/O

    我有几个想要阅读的日志文件 不失一般性 假设日志文件处理如下 def process infilepath answer 0 with open infilepath as infile for line in infile if line
  • 如何设置 NSButton OSX 的背景颜色

    我想设置 NSButton 的背景颜色 属性检查器中没有任何内容 所以我想知道是否有任何方法可以以编程方式完成此操作 系统控件需要遵循 Apple 的外观和感觉 因此您无法轻松更改背景颜色 如果你想完成这个 你需要子类化 NSButton
  • 如何从终端启动 applescript.scpt 文件并传递术语/变量?

    我有一个苹果脚本 它可以执行以下操作 using terms from application Quicksilver on open theseitems repeat with aitem in theseitems display d
  • 如何在全屏视图前面显示 NSPanel?

    我的应用程序以全屏方式运行 我需要类似 iOS 的 UIPopoverController 之类的东西 第一个想法是使用 NSPanel 但我无法让它显示在全屏视图前 我需要一个类似 UIPopoverController 的 Cocoa
  • 计算向量的导数

    我有以下函数 维维亚尼曲线 Phi t cos t 2 cos t sin t sin t 只需检查它是否有效 s linspace 0 T 1000 plot3 cos s 2 cos s sin s sin s 如何推导函数Phi 可能
  • Cocoa webview UserAgent“webkit-legacy”问题

    我解决了这个问题 请看下面所选的答案 我一直在努力寻找导致 OSX Cocoa 应用程序的 WebView 与 Safari 表现不同的原因 事实证明 用户代理是不同的 有点明显 并且我正在访问的网站不知道如何处理它 令人惊讶的是 它是ht
  • 如何在 apache 中访问唯一 ID?

    如何访问 apache 跟踪每个请求的 unique id 我想在它调用的任何 php 脚本中跟踪它 并记录每个请求 我删除了以下行的评论http conf file LoadModule unique id module libexec
  • 如何更改 OS X 应用程序包中的可执行文件

    我想在 Firefox 启动之前和退出之后运行一个脚本 在 Ubuntu 中 我通过创建一个新的快捷方式来实现此目的 该快捷方式首先调用我的函数 然后调用 firefox 命令 然后调用我的最后一个函数 由于 firefox 命令会阻塞直到
  • 未定义的参考错误 - rand

    我正在创建一个命令行 C 测试应用程序 可执行 以便在我的 root Android 设备上运行 该可执行文件使用多个预构建的 C 库 其中之一使用 rand 在链接状态期间我收到错误 rand 的未定义引用 为了检查路径是否设置正确 我尝
  • 左右 mac“命令”键的配置不同吗?

    我想知道是否可以将右侧的 mac 命令 设置为像 ctrl 键一样 但保留左侧 命令 键的默认功能 谢谢 有一个非常棒的应用程序 称为 Ukelele 免费 不幸的是 它无法区分左右命令键 然而 我最近发现了一个更好的应用程序 名为 Con
  • MacOS 中 AVFoundation 和 Metal 的帧速率非常慢

    我正在尝试适应苹果的AVCam滤镜 https developer apple com documentation avfoundation cameras and media capture avcamfilter applying fi
  • Bash touch - 非法选项 -d

    昨天我拍了很多照片 但我忘记更改相机中的时区 现在所有图片的修改日期都有错误 我想将特定目录中所有文件的修改日期更改为minus 10 hours bin sh for i in Users slick Desktop 100D5200 d
  • MATLAB 符号替换

    我知道在 MATLAB 中如果声明了 syms x y f x 2 y 2 grad gradient f 然后grad会存储值 2 x 2 y 如果我想评估梯度 2 2 I use subs f x y 2 2 这返回 4 4 我正在编写
  • 在matlab中融合2个以上的图像

    在 MATLAB 中 如何融合两个以上的图像 例如 我想要做什么imfuse但对于超过 2 个图像 使用两张图像 这是我的代码 A imread file1 jpg B imread file2 jpg C imfuse A B blend
  • 如何在 SceneKit 中以编程方式将 png 纹理包裹在立方体周围

    我是 SceneKit 的新手 试图让一些基本的东西工作 但到目前为止还没有取得多大成功 由于某种原因 当我尝试将 png 纹理应用于 CNBox 时 我最终除了黑色之外什么也没有 这是我在 viewDidLoad 中的简单代码片段 let
  • 如何使用最小生成树方法将边缘连接到图像中的节点

    我正在做我的手写图像图形匹配项目 我想在图形中表示给定的单词图像 我使用下面的算法 Algorithm input Binary image B Grid width w Grid height h Output Graph g V E w
  • 将 bash 提示符下的当前命令复制到剪贴板

    我想要一个快速的键盘命令序列 将 bash 提示符处的当前命令复制到剪贴板 例如 要将最后一个 bash 命令复制到剪贴板 我会按 up some command sequence 复制它 或者 例如 要在 bash 历史记录中搜索命令 我
  • FileProviderExtension 将不会在 macOS 12.2 中加载

    我是 macOS 开发新手 我正在尝试开发 macOS FileProvider 扩展 一切都很好 直到我将 macOS 从 11 更新到 12 2 更新操作系统后 NSFileProviderManager add domain 不会加载

随机推荐

  • R散点图:符号颜色代表重叠点的数量

    当许多点重叠时 散点图可能很难解释 因为这种重叠会掩盖特定区域中数据的密度 一种解决方案是对绘制点使用半透明颜色 以便不透明区域表明这些坐标中存在许多观测值 下面是我在 R 中的黑白解决方案的示例 MyGray lt rgb t col2r
  • 将类名与变量 Angular 2 连接起来

    我想要类似的东西class myClass classVar 我试图将类名与范围内的变量值连接起来 但不起作用 div span span div Add a 和一个空格 div span span div
  • !!(x) 在 C(尤其是 Linux 内核)中意味着什么?

    我一直在阅读 Linux 内核 具体来说 2 6 11 我遇到了以下定义 define unlikely x builtin expect x 0 来自 linux 2 6 11 include linux compiler h 61lxr
  • 对于自定义容器类的成员,List.Sort() 与 List.OrderBy() 的实用程序

    我发现自己回顾了一些旧的 3 5 框架遗留代码 并发现了一些点 其中有一大堆列表和字典必须以同步方式更新 我已经确定 通过将这些融合到新的自定义类的自定义容器类中 我可以使这个过程变得更加易于使用和理解 然而 在某些方面 我开始担心通过特定
  • 使用 jquery + jsonp,Internet Explorer 不保存 ASP.NET sessionID

    所以我正在使用 Jquery 做一些相当简单的 JSONP 东西 总体结构 网站存在于域中A JavaScript 存在于域中B JSON 服务也存在于域中B 该站点调用 jsonp 调用 json 服务 net 的方法 在 net 中我设
  • Jetty Servlet 不运行——而是获取目录列表

    我正在尝试让在 Netbeans 中构建并运行的 servlet 在 jetty 服务器上运行 本地部署始终有效 但是在 Jetty 上部署会导致目录列表 而不是实际运行的 servlet 问题似乎出在上下文配置上 但我不知道我做错了什么
  • Jax-RS 未使用 @provider 注释注册资源

    我有一个使用 jersey api 在 weblogic 12c 中运行的休息应用程序 我有一个带有注释 provider 的http 请求过滤器类 但是 在部署应用程序时 过滤器类未向我在 ApplicationConfig 类中添加的其
  • 具有 Owin 身份验证的 Mono

    我有一个在 Mono 中运行的 Owin 应用程序 我正在尝试让身份验证在其上正常工作 我使用了以下信息这一页 https coding abel nu 2014 06 writing an owin authentication midd
  • 如何使用for循环matlab调用顺序变量? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一堆变量叫做length act
  • -O0、-O1 和 -g 有什么区别

    我想知道如何使用 O0 O1 和 g 在库中启用调试符号 有些建议使用 O0 来启用调试符号 有些建议使用 g 那么 g 和 O0 之间的实际区别是什么 01 和 O0 之间的区别是什么 哪个最好使用 O0是优化级别 0 无优化 与省略 O
  • 无法从“pyproj”导入名称“CRS”以使用 osmnx 库

    I have used a fresh anaconda install to download and install all the required modules for osnmx library but I got the fo
  • 我们什么时候使用ANTLR

    谁能指导我在 ASP Net C 项目中使用 ANTLR dll 的目的 我刚刚注意到antlr 运行时 Antlr3 运行时 Antlr3 实用程序某些项目中引用的程序集 如果能引用一些现实世界的例子或者任何指向网页的链接都会有用 那就太
  • 如何在文本区域更改时将“必需”属性添加到输入?

    我需要在文本区域 orderComments 中输入文本的情况下将 required 属性添加到 html select toDept 中 下面是我的代码 我缺少什么 我需要在更改事件或其他事件上运行 jquery 吗 document r
  • EJB企业应用程序不需要EJB接口

    我创建了一个 Java EE 应用程序并向 EJB 项目添加了一个无状态会话 bean EJB 项目是 web WAR 项目中的依赖项 我将在 EJB 项目中创建的 EJB 注入到我的一个 servlet 中 这工作正常 我能够在 Web
  • 我可以获取字符串形式的 saml-token 吗?

    我正在使用 spring security saml2 1 0 0 RELEASE 它运作良好 对我来说非常好 但新的要求提出了 我需要 saml token 作为字符串 我可以将 saml token 作为字符串获取吗 我在日志中找到 s
  • 在 Android Studio 2.3 上创建项目时出错

    我已将 Android Studio 从 2 2 升级到 2 3 当我创建带有导航活动的新 Android 项目时 出现两个错误 Error java util concurrent ExecutionException java lang
  • Java 9 的 Maven 编译问题

    尝试使用 JDK 9 0 1 编译 Maven 项目时 我遇到了这个堆栈跟踪 但没有太多解释 Exception in thread main java lang AssertionError at jdk compiler com sun
  • 使用 C# 为所有桌面快捷方式创建自定义右键单击上下文菜单项(Windows 资源管理器)

    问题很简单 我有很多桌面快捷方式 它们指向很多文件 但我也有很多快捷方式 它们指向这些快捷方式所指向的目录 我想通过简单地为所有快捷方式 lnk 文件 添加另一个右键菜单选项来消除这种冗余 该选项允许您将 explorer exe 打开到包
  • 使用 Google Apps 脚本将 Google 表格中的行追加到 Big Query 中的现有表

    我有一个 Google 表格 我想从中选择一些单元格并将它们作为行附加到 Big Query 中已存在的表格中 我编写了以下代码 运行时没有任何错误 但是当我检查 BQ 中的表时 它没有更新 function myFunction var
  • 让 MATLAB Mex 搜索特定文件夹中的库

    我创建了一个 mex 函数 它依赖于一个依赖于另一个库的库 当我执行该函数时 它在运行时输出以下错误 Invalid MEX file Library not loaded usr local lib libgomp 1 dylib 我的计