我是OpenCV的新手,我遇到了链接问题。
我正在使用Ubuntu 11.10,根据this指南安装了OpenCV 2.3.1:
我正在使用它构建许多小应用程序,它看起来很好。
通常,我正在使用pkg-config --libs --cflags opencv
构建。
现在,我正在尝试构建一些其他人编写的框架,它编译没有任何问题,但我无法链接它:有一长串的“未解决的参考...”(其中数以千计) )。找不到与opencv_core相关的所有符号。
我试图在没有预编译头支持的情况下重新编译OpenCV,没有帮助。当然。 :(
test_opencv_core应用程序运行正常,但opencv_rand失败。我认为它通常说opencv_core是正确的,但是当我需要它时它仍然不起作用......
你可以试着给我一些提示吗?我迷失了。提前谢谢你, 大卫
更新: 解决。
gcc 4.6.1要求在打包到共享库之前,libs和source将在命令行中显示。为什么?不知道。这个愚蠢的错误花了24小时:(
更新: 可以理解的。 来自ld手册页:
链接器将仅在存档位置搜索一次存档 在命令行中指定。如果存档定义了符号 在归档之前出现的某个对象中未定义 在命令行上,链接器将包含相应的文件 来自档案馆。但是,出现的对象中存在未定义的符号 稍后在命令行上不会导致链接器搜索 再次存档。
请参阅 - (用于强制链接器搜索存档的方法的选项) 多次。
就是这样。
答案 0 :(得分:1)
gcc 4.6.1要求在共享库的路径之前,libs和源将出现在命令行中。我不知道为什么。
<强>更新: 可以理解的。强> 来自ld手册页:
链接器将仅在存档位置搜索一次存档 在命令行中指定。如果存档定义了符号 在归档之前出现的某个对象中未定义 在命令行上,链接器将包含相应的文件 来自档案馆。但是,出现的对象中存在未定义的符号 稍后在命令行上不会导致链接器搜索 再次存档。
请参阅 - (用于强制链接器搜索存档的方法的选项) 多次。
就是这样。