在Ubuntu上链接OpenCV 2.3.1

Dav*_*vid 6 c++ linker opencv

我是OpenCV的新手,我遇到了连接问题.

我正在使用Ubuntu 11.10,根据指南安装了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手册页:

链接器将仅在命令行上指定的位置搜索一次存档.如果存档定义了在命令行上存档之前出现的某个对象中未定义的符号,则链接器将包含存档中的相应文件.但是,稍后在命令行中出现的对象中的未定义符号将不会导致链接器再次搜索存档.

请参阅 - (用于强制链接器多次搜索存档的方法的选项).

而已.

Bil*_*ard 1

gcc 4.6.1 要求库和源代码出现在命令行中共享库路径之前。我不知道为什么。

更新:可以理解。 来自 ld 手册页:

链接器只会在命令行指定的位置搜索存档一次。如果存档定义了一个在命令行上出现在存档之前的某个对象中未定义的符号,则链接器将包含存档中的相应文件。但是,稍后出现在命令行上的对象中的未定义符号不会导致链接器再次搜索存档。

请参阅 -( 选项,了解强制链接器多次搜索档案的方法。

就是这样。