使用 .so 对象编译时'undefined reference to `shogun::SGRefObject::unref()'



当我尝试编译幕府将军开发人员页面上
给出的高斯内核测试时,我收到此错误https://github.com/shogun-toolbox/shogun/wiki/README_developer。
我按照给出的说明制作了 https://github.com/shogun-toolbox/shogun/wiki/INSTALL 的.so幕府将军图书馆。
然后,我转到上面包含共享对象库的目录并发出了"g++ GTest.cpp shogun/libshogun.so -o a.out"订单,并得到了本文主题的错误。
我浏览了网络上链接的一个线程(2 个链接限制),但我找不到给定的解决方案。
有人知道如何解决这个问题吗?

您不应该尝试将共享库与您的示例直接链接。假设您创建了一个基于幕府将军的示例文件,我们将其称为shogun_example.cpp,为了编译它,您应该运行:

g++ shogun_example.cpp -o shogun_example -lshogun

这是为了防止libshogun.so位于链接器的搜索路径中。

如果编译libshogun.so不在搜索路径中,则应使用-L向编译器提供共享库的位置,例如:

g++ shogun_example.cpp -o shogun_example -L<path to the shogun shard lib> -lshogun