1

我编写并编译了一个 MEX 函数以从 MATLAB 例程中调用,它在我的计算机上运行良好。但是,当我尝试让另一台计算机运行我的例程时,它会因错误提示模块不存在而中断。我的 MEX 函数正在引用 GSL 库和其他一些库。我想知道是否可以编译我的 MEX 函数,以便它是独立的。当我说独立时,我的意思是如果我只是将 MEX 文件复制到另一台计算机,并且没有安装任何库或编译器,它仍然可以工作。

谢谢!

4

1 回答 1

0

您的外部库需要是静态库。然后有很多方法可以做到:

  • 在运行 mex(gcc 选项)时添加一个“-static”链接器标志。
  • 而不是使用 '-lgsl' 添加 '/path/to/libgsl.a' (Linux)
  • 或者只是将您在 mex 文件中使用的库中的目标文件添加到 mex 命令

mex 文件本身仍将仅在兼容系统上运行(64 位与 32 位,匹配 libc 版本)。

在 linux 上,要检查您是否已正确编译,请键入“ldd mexfile.mexext”。您的外部库不应显示在列表中。

于 2012-09-05T12:42:04.710 回答