如何在C ++项目中使用共享动态库?

特格科

我正在运行64位Linux并使用Netbeans 8.0 IDE。我只是创建了一个新的C ++项目,到目前为止仅包含一些HelloWorld代码。我想使用第三方库进行记录。我选择了log4cpp(因为我有使用Java的经验,并且应该具有相似的接口)。

我从存储库中安装了liblog4cpp,可以在/ usr / lib中看到它,这很清楚:

$ locate log4cpp
/usr/lib/liblog4cpp.so
/usr/lib/liblog4cpp.so.5
/usr/lib/liblog4cpp.so.5.0.5
/usr/lib/x86_64-linux-gnu/liblog4cpp.so
/usr/lib/x86_64-linux-gnu/liblog4cpp.so.5
/usr/share/doc/liblog4cpp5
/usr/share/doc/liblog4cpp5/AUTHORS
/usr/share/doc/liblog4cpp5/NEWS.gz
/usr/share/doc/liblog4cpp5/README
/usr/share/doc/liblog4cpp5/THANKS
/usr/share/doc/liblog4cpp5/TODO
/usr/share/doc/liblog4cpp5/changelog.Debian.gz
/usr/share/doc/liblog4cpp5/changelog.gz
/usr/share/doc/liblog4cpp5/copyright
/var/cache/apt/archives/liblog4cpp5_1.0-4_amd64.deb
/var/lib/dpkg/info/liblog4cpp5.list
/var/lib/dpkg/info/liblog4cpp5.md5sums
/var/lib/dpkg/info/liblog4cpp5.postinst
/var/lib/dpkg/info/liblog4cpp5.postrm
/var/lib/dpkg/info/liblog4cpp5.shlibs

我在如何将其包含在我的应用程序中遇到了很大的麻烦。从我放入源代码中的文档示例中得到启发:

#include "log4cpp/Category.hh"
#include "log4cpp/Appender.hh"
#include "log4cpp/FileAppender.hh"
#include "log4cpp/OstreamAppender.hh"
#include "log4cpp/Layout.hh"
#include "log4cpp/BasicLayout.hh"
#include "log4cpp/Priority.hh"

我最初使用的是netbeans生成的Makefile,但是无法弄清楚如何配置项目以使其正常工作。我所有的尝试都导致以下错误(第16行是第一个#include):

$ make
src/main.cpp:16:31: fatal error: log4cpp/Category.hh: No such file or directory
compilation terminated.
make: *** [build/NetworkConfiguration.o] Error 1

我也尝试了一个自定义的Makefile,给了g ++参数-llog4cpp,但是我总是遇到相同的错误。如果有帮助,我可以提供更多信息/代码。该解决方案不需要依赖于IDE,我觉得我只是误解了链接的工作原理,因此可以自由地教育我如何使用自定义Makefile从控制台实现所需的功能。

特格科

由于cup仍未发布答案,因此我将他的评论解释为可接受的答案。

安装liblog4cpp-dev。区别在于liblog4cpp仅包含库,而liblog4cpp-dev是包括头文件的开发套件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章