gpt4 book ai didi

matlab - gcc 链接器找不到库 (openNI)

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:37 25 4
gpt4 key购买 nike

谁能给我一些解决这个问题的提示?

我正在尝试编译 "Kinect Matlab" (在 Mac OS 10.7 上),在编译脚本中是以下行:

mex('-v','-L/usr/lib/','-lOpenNI',[...],Filename);

这是 mex 运行的完整命令:(1)

gcc-4.2 -O -Wl,-twolevel_namespace -undefined error -arch x86_64 -Wl,-syslibroot,/Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.5 -bundle -Wl,-exported_symbols_list,/Applications/MATLAB_R2011a.app/extern/lib/maci64/mexFunction.map -o  "mxNiChangeDepthViewPoint.mexmaci64"  mxNiChangeDepthViewPoint.o  -L/usr/lib/ -lOpenNI -L/Applications/MATLAB_R2011a.app/bin/maci64 -lmx -lmex -lmat -lstdc++

然后我收到以下错误:

ld: library not found for -lOpenNI
collect2: ld returned 1 exit status

mex: link of ' "mxNiChangeDepthViewPoint.mexmaci64"' failed.

/usr/lib/libOpenNI.dylib 中肯定有一个文件。

什么样的事情会导致 ld 抛出这个错误?

我尝试了什么:

  • 我已经尝试创建一个名为 libOpenNI.so 的符号链接(symbolic link),就像 jmlopez 所建议的那样,但没有效果。
  • 难道 libOpenNI 是一个 32 位库,而 ld 没有看到它是因为这个原因吗?或者错误会有所不同吗?
  • 关于上面的一点,它说构建是“通用 x86/x64”

环境变量:

我尝试使用以下命令从 matlab 终端将库添加到环境变量。没有影响。

setenv('DYLD_LIBRARY_PATH', [getenv('DYLD_LIBRARY_PATH') ':/usr/lib/']);

在庆典中:

只需按照此处的建议调用 gcc https://serverfault.com/questions/54736/how-to-check-if-a-library-is-installed没有问题。

$ gcc -lOpenNi
Undefined symbols for architecture x86_64:
"_main", referenced from:
start in crt1.10.6.o

但是,如果我先运行 g++,然后像 (1) 那样运行 gcc,就会出现与之前相同的错误。 (找不到图书馆)。为什么 gcc 可以找到库,但是当 matlab 添加 (1) 中的东西时,它会把事情搞砸?

因此,与上面所说的相关,我开始从 (1) 中删除所有参数,直到出现不同的错误。我删除了 -Wl,-syslibroot,这意味着 -syslibroot 将不再传递给 ld,这似乎已修复它。所以 -syslibroot 搞乱了库搜索目录!现在想办法从 mex() 调用中删除这个参数。

最佳答案

您是否尝试将 OpenNi 添加到您的 LIBRARY_PATH

export LIBRARY_PATH=$LIBRARY_PATH:/YOUR-PATH/OpenNi

关于matlab - gcc 链接器找不到库 (openNI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8140156/

25 4 0
文章推荐: css - 对 app.css 的更改不适用于 GUI
文章推荐: c# - 如何处理 Linq2Sql 列表中的空值
文章推荐: html - 如何将
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com