2013-02-21 86 views
0

我的问题是我无法将库包含到我当前的项目中。 [将NetBeans中的库包含到项目中的方法是通过链接器将其链接到项目]。但是,在我目前的项目中(由另一位离开组织的程序员编写的)链接器的选项没有出现。我附上了截图。我面临的问题是,通过链接器将库链接到当前项目的选项并未出现在IDE中。有人可以请帮助我。我会非常感谢你的一样。链接库问题C++

请指导我如何将库链接到我的项目。我真的花了很多时间做这件事,但我没有成功。 screenshot

+0

显示由您的界面调用的命令行。 – 2013-02-21 23:03:23

+0

@BasileStarynkevitch我一定会显示命令行。但我不知道该怎么做(我该怎么做,以便命令行出现)..你可以请指导我...也非常感谢回复:)另外,我真的是一个新手,所以请原谅 – 2013-02-21 23:08:24

+0

您正在混淆标题,并且包含库文件和链接过程。链接是从你使用的编译器调用的(我假设gcc)。与gcc链接是一个传递正确参数并在系统中拥有库的问题。 我不明白为什么它会与netbeans不同。你有没有尝试传递你用作参数的库链接标志? – 2013-02-21 23:10:53

回答

0

假设你在libspatialindex只是有趣:

  1. 请确保您有安装相应的文件:尝试locate libspatialindex,看看它安装在哪里。你可以有* .a,* .so或类似的扩展名。注意路径。
  2. 进入到你的项目的根目录,即:/家庭/凯拉/的NetBeans /项目/ MyProject的
  3. 尝试:gcc -i main.cpp -L/usr/lib/ -lspatialindex -o myfile

更换-L/usr/lib中有,你知道的实际位置图书馆在。

cxx链接标志通常是带有-l前缀的库的名称。例如,如果在系统中找到的名称是libspatialindex.so,那么使用-lspatialindex来尝试一个很好的选择。

有一种方法可以找到Debian & Ubuntu系统上的实际标志,但我不能记住它。或者,您可以随时在Google上查看或阅读图书馆文档。

当你通常看到链接器错误与未定义的函数等,这意味着你不链接,只要你已经包括头和他们被发现。

现在对于Netbeans,我假设有一个选项可以向编译器传递额外的参数。在这种情况下,只需要-lspatialindex标志,只要Netbeans知道在哪里可以找到库和标题。这就是它在我使用的KDevelop和其他IDE中的工作原理。

另外,如果你想要更多的控制和更多的自动化,你可能需要使用像cmake这样的工具。

+0

..感谢您的帮助..我通常在netbeans中使用“”$ {OUTPUT_PATH}“db myfile.txt”运行命令。所以我应该包括 - “L/usr/lib/-lspatialindex -o myfile”之后...请指导 – 2013-02-21 23:41:08

+0

非常感谢...你真的很有帮助 – 2013-02-21 23:41:36

+0

它显示无法打开lspatialindex :( – 2013-02-21 23:58:21