重新编译后 Mex 函数未更新

2023-11-22

我有一个简单的 mex 函数,它从库中调用另一个 C++ 函数。我编译源代码

mex -cxx mymexfunction.cpp -I/some/include -L/some/lib -lmylib

mylib 库是动态的 (.so),并且自身与其他一些库(boost、OpenCV 等)链接。

我遇到的问题是,一旦我调用了函数 mymexfunction 一次,当我重新编译源代码时它就不会更新。我努力了

clear
clear all
clear mex
clear functions
clear fun('mymexfunction')
munlock('mymexfunction')
unloadlibrary('mymexfunction')

...但是没有任何帮助!我必须重新启动 Matlab 才能看到更新后的 mexfunction。即使我删除编译后的mex文件并重新编译,我仍然得到旧版本的mex函数(不在磁盘上,而是在内存中)。

如果我不链接到 mylib,一切都很好,但我不知道阻止更新的罪魁祸首是什么。遗憾的是,该库太大且过于交织,无法一一删除单个模块。

是否存在一些可能导致此类问题的已知条件?

澄清:

我只更新 mex 函数的内容,而不更新库。

Update:

它可以在 Ubuntu 11.04 和 Matlab R2011a 下运行!我尝试在我的 OpenSUSE 机器上重现相同的环境(R2011a、Boost 1.42、OpenCV 2.2 动态链接,...),但仍然没有成功。所以我得出的结论是,我的库实际上没有任何问题(否则它无法在 Ubuntu 下工作),但一定是依赖项和 Matlab 内部库发生了一些冲突。我正式放弃。 Praetorian 和 Amro,感谢你们的帮助!


The mex如果当前已加载到内存中,命令会自动清除 mex 函数。您确定您的 mex 函数正在关闭它持有的其他库的任何句柄吗?如果存在这样的句柄,它可能会阻止操作系统卸载 mex 文件。

我使用了以下一组命令来手动清除 mex 函数,根据我的经验,在调用时使用 mex 文件的完整路径clear作品。因此,尝试一下,如果它仍然没有被卸载,您可能需要开始查看用于加载和卸载其他库的代码。

[~,f] = inmem( '-completenames' );
result = strfind( f, ['mymexfile' '.' mexext] );
result = f(cellfun( @isempty, result, 'UniformOutput', true ) == 0);
clear( result{:} )

尝试运行inmem在上述命令之后再次命令,看看您的 mex 文件是否仍然列出。

可以帮助您确保卸载其他库的方法可能是使用std::shared_ptr持有该库的句柄。然后,在开始时mexFunction()入口点加载库并将句柄插入shared_ptr. The shared_ptr还需要使用自定义删除器来卸载库(在 Windows 上,自定义删除器将调用FreeLibrary).

当然,如果这是由其他库中的错误引起的,那么这些都没有帮助。

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

重新编译后 Mex 函数未更新 的相关文章

  • 通过多次合并相同的行向量来构建矩阵

    有没有一个matlab函数可以让我执行以下操作 x 1 2 2 3 然后基于x我想建立矩阵m 1 2 2 3 1 2 2 3 1 2 2 3 1 2 2 3 您正在寻找REPMAT http www mathworks com help t
  • 通过 cuFFT 进行逆 FFT 缩放

    每当我使用 cuFFT 绘制程序获得的值并将结果与 Matlab 的结果进行比较时 我都会得到相同形状的图形 并且最大值和最小值位于相同的点 然而 cuFFT 得到的值比 Matlab 得到的值大得多 Matlab代码是 fs 1000 s
  • MATLAB - 通过垂直连接子矩阵重新排列矩阵

    我在执行以下任务时遇到问题 假设一个 3x6 矩阵 A 0 2787 0 2948 0 4635 0 8388 0 0627 0 0435 0 6917 0 1185 0 3660 0 1867 0 2383 0 7577 0 6179 0
  • 在 Matlab 中保存 Kinect 深度图像?

    通过使用 Kinect 我可以获得深度图像 其中每个深度图像像素存储相机和物体之间的距离 以毫米为单位 现在我想保存它们以便以后使用 最好的推荐是什么 我正在考虑将深度图像保存为图像 jpg png等 然而 该值通常是从50毫米到10000
  • MATLAB:将当前文件夹设置为脚本位置

    我在不同的文件夹中有一些脚本和数据 我使用addpath和相对路径经常 我的问题是 只有当我的当前文件夹是我执行的脚本所在的位置时 这才有效 例如 如果我执行添加路径 X 的脚本 A 然后执行位于路径 X 中的脚本 B 则 Matlab 不
  • Matlab:2行10列的子图

    如何在 matlab 中绘制 20 幅图像 2 行 10 列 我知道我必须使用 子图 功能 但我对给出的参数感到困惑 我尝试给予 子图 2 10 行索引 列索引 但它似乎不起作用 请帮忙 的前两个参数subplot函数分别给出图中子图的总行
  • 如何从 matlab 调用 Qtproject?

    我在 matlab 中有一个函数可以写入一个 file txt 我在 qt 项目中使用它 So 当我使用 unix 获取要运行的 qt 编译可执行文件时 我有一个 Matlab 文件 但出现错误 代码 unix home matt Desk
  • 像matlab一样在python中连接数组而不知道输出数组的大小

    我正在尝试在 python 中连接数组 类似于 matlab array1 zeros 3 500 array2 ones 3 700 array array1 array2 我在 python 中做了以下操作 array1 np zero
  • 考虑预分配速度[重复]

    这个问题在这里已经有答案了 我正在做以下事情 for i 1 m index 0 for j 1 n index index values i j 2 j 1 if j 1 symbol chip chip values index 1 e
  • 氡变换线检测

    我正在尝试检测灰度图像中的线条 为此 我在 MATLAB 中使用 Radon 变换 我的 m 文件的示例如下所示 我可以使用此代码检测多行 我还使用线条的移位和旋转属性来绘制线条 但是 我不明白在获取rho和theta值后如何获取检测线的起
  • 二维随机微分方程 (SDE)

    我第一次研究随机微分方程 我正在寻求模拟和求解二维随机微分方程 模型如下 dp F t p dt G t p dW t where p 是一个 2 1 向量 p theta t phi t F是列向量 F sin theta Psi cos
  • 在 MATLAB 中验证输入的最佳实践

    在验证 MATLAB 函数中的输入时 什么时候使用 inputParser 比使用断言更好 或者还有其他更好的工具可用吗 我个人发现使用 inputParser 不必要地复杂 对于 Matlab 始终需要检查 3 项内容 存在 类型和范围
  • MATLAB 子图标题和轴标签

    我有以下脚本来最终绘制 4 x 2 子图 files getAllFiles preliminaries n size files cases cell 1 n m cell 1 n for i 1 1 n S load files i c
  • 在 Matlab/Java 中将手部运动建模为 3D 曲线

    我只需要一些关于我遇到的问题 在哪里查看等的指导 我在我的一个项目中使用了运动跟踪手套 它返回每个手指和手掌的 X Y 和 Z 值 我想做的是首先根据这些坐标创建每个手指运动的表示 然后将它们每个附加到手掌的运动 以获得手的表示 一旦我完成
  • 使用网络计算机进行 Matlab 并行处理

    我熟悉matlabpool and parfor用法 但我仍然需要加快计算速度 我的 1GB 网络中有一台功能更强大的计算机 两台计算机都有 R2010b 并且具有相同的代码和路径 使用两台计算机进行并行计算的最简单方法是什么 我今天使用的
  • 在 numpy/scipy 中查找 matlab 函数

    是否有一个等价的函数find A gt 9 1 来自 numpy scipy 的 matlab 我知道有nonzeronumpy 中的函数 但我需要的是第一个索引 以便我可以在另一个提取的列中使用第一个索引 Ex A 1 2 3 9 6 4
  • MATLAB - 从目录读取文件?

    我希望从目录中读取文件并对每个文件迭代执行操作 此操作不需要更改文件 我知道我应该为此使用 for 循环 到目前为止我已经尝试过 FILES ls path to folder for i 1 size FILES 1 STRU pdbre
  • 如何使用最小生成树方法将边缘连接到图像中的节点

    我正在做我的手写图像图形匹配项目 我想在图形中表示给定的单词图像 我使用下面的算法 Algorithm input Binary image B Grid width w Grid height h Output Graph g V E w
  • Matlab 错误:()-索引必须出现在索引表达式的最后

    我有这段代码 想要在制表符分隔的 txt 文件中写入一个数组 fid fopen oo txt wt for x 1 length s fprintf fid s t n s x 1 end fclose fid 但我收到此错误 Error
  • 如何在 MATLAB 中为 4 个子图创建一个通用图例?

    如何在 MATLAB 中为 4 个子图创建一个通用图例 如下所示 又快又脏 hSub subplot 3 1 1 plot 1 1 1 1 1 1 1 1 hLegend legend hello i am legend subplot 3

随机推荐

  • 在 Python 中使用 dbus 发送消息

    我有 2 个 Python 程序 我只想从一个向另一个发送一条消息 一长串 并且我想使用 dbus 现在 有没有一种简单的方法可以做到这一点 例如 如果消息非常小 我已经部分解决了将消息放在路径中的问题 但后来我不得不使用外部程序 dbus
  • 使用compareTo实现equals方法

    一般问题 当实现默认值的覆盖时equalsJava 中的方法 对于简单地使用已经实现的方法我应该担心什么compareTo方法 vs 将独立逻辑写入 equals 方法 我注意到有人在另一个问题中提到foo equals String nu
  • git 存储库克隆日志记录

    我希望监视 git 存储库中的克隆活动 但是我找不到任何显示如何设置或如何检索此信息的内容 这可能吗 如果是这样 如何设置以及如何检索日志记录信息 您可以使用post checkout用于更新服务器上的数据库或文件的钩子 该钩子在客户端运行
  • 模拟 ngrx 在单元测试中存储带有参数的选择器(Angular)

    我正在尝试为 Angular 中的服务编写单元测试 我想模拟 ngrx 的 store select 函数 这样我就可以测试服务如何对存储选择器返回的不同值做出反应 我希望能够单独模拟每个选择器 我的主要问题是如何模拟参数化选择器 我之前使
  • 使用 r 中的 ggplot2 编辑绘图工具提示中的标签

    我知道这个问题已经被问过很多次了 但我认为自从提出这些问题以来 plotly 的一些底层语法已经发生了变化 使用ggplotly 创建分区统计图会给出长 纬度 组的默认工具提示 以及我的美学变量之一 我知道工具提示仅映射美学内容 我想要做的
  • CLR 同步块地址

    当我做 public class Employee public int exp class Program static void Main string args Employee o1 new Employee o1 exp 3 lo
  • Three.js 中的内存泄漏

    我们正在尝试创建一个单页面应用程序 用户可以在其中在多个 Three js 应用程序之间切换 然而 我们注意到该选项卡的内存使用量不断增加 我们的应用程序中没有内存泄漏 并且 Three js 变量似乎没有从 RAM 中清除 重新创建的步骤
  • 在 IIS 中部署时打开内存映射文件会导致 FileNotFoundException

    以下代码示例来自this网站上 我创建了一个 Windows 控制台应用程序 用于创建映射内存文件 using var file MemoryMappedFile CreateNew myFile 24 var bytes new byte
  • 通过 webhook 触发 azure 管道?

    我想通过 Webhook 触发 Azure DevOps 管道 例如 我希望能够使用一些 JSON 向 Azure 上的某个端点发送 POST 然后让该端点触发要调用的管道 并向其传递 JSON 这可能吗 现在可在 Azure DevOps
  • 从符号链接获取真实路径 C#

    有谁知道如何从符号链接文件或文件夹中获取真实路径 谢谢你 大家好 经过我的研究 我找到了这个解决方案来获取符号链接的真实路径 如果您创建了符号链接并想检查该文件或文件夹的真实指针在哪里 如果有人有更好的写法请分享 DllImport ker
  • 如何为 ember.js 创建自定义适配器?

    我计划使用 ember js 但是我的 REST api 与打包的 REST 适配器并不完全一致 我想 覆盖 find 并能够将我自己的 ajax 放入其中 我不喜欢 ember findAll 在没有分页选项的情况下检索所有文档 因此与其
  • React 模式对话框的内容不可用于使用 mount() 的酶测试

    我有一个带有模式对话框的 React 组件 使用构建reactstrap 但其他人也报告了类似的问题react bootstrap和其他类型的模态组件 Enzyme 无法找到模态中的任何组件 即使它们在实际应用程序中呈现良好 最小的例子 i
  • 提高 R Rayshader 图像的分辨率

    我正在尝试使用 Rayshader 包制作图像 我很高兴能够使用如下代码创建 png 文件 library ggplot2 library rayshader example plot lt ggplot data frame x c 1
  • 如何在没有元类冲突的情况下将泛型类型与 PyQt 子类一起使用?

    我曾尝试过abc ABCMeta使用 sip 包装类型 并且当子类化时它工作得很好abc ABC class QABCMeta wrappertype ABCMeta pass class WidgetBase QWidget metacl
  • AngularJS - 在登录时存储基本身份验证

    我对此感到很头疼 我对 API 的使用还比较陌生 还没有做过任何需要身份验证的事情 我一直坚持向 API 发送 POST 请求 创建内容片段的端点是 entity node 如果我发送以下内容 我可以发送成功的 POST 请求 header
  • 将 dict 转储到 JSON 时保持顺序

    我想将数据库查询的结果序列化为 JSON 每行都有许多列 我添加到一个字典中 这些列按一定顺序排列 但是当我序列化数据时 顺序会发生变化 我尝试使用OrderedDict 但仍然看到同样的问题 如何保持列的顺序 res a i 0 b i
  • :[属性=值]的第n个子级(2n)

    我有一个包含行的列表 每一行li有一个属性data status其值可以是1 5 ul li li li li li li li li li li li li li li li li li li li li li li ul
  • 如何在 ASP.net Core 2 的 appsettings.json 中加密密码?

    我想使用 appsettings json 来存储 主密码 然后 该主密码将用于打开由这个出色的密码存储包生成的私钥 及其后续密码存储 https github com neosmart SecureStore 问题是 我想不出任何方法来加
  • R 中形状文件到光栅的转换?

    我从 worldwildlife org 下载了一个关于世界陆地生态区的形状文件 该文件可以在此处加载 http worldwildlife org publications terrescial ecoregions of the wor
  • 重新编译后 Mex 函数未更新

    我有一个简单的 mex 函数 它从库中调用另一个 C 函数 我编译源代码 mex cxx mymexfunction cpp I some include L some lib lmylib mylib 库是动态的 so 并且自身与其他一些