【问题标题】:Undefined reference to Eclipse C++对 Eclipse C++ 的未定义引用
【发布时间】:2019-07-10 02:11:33
【问题描述】:

我尝试了越来越多的时间,但我得到了同样的错误。 例如,当我使用外部库时,我尝试使用 openssl 和 crypto++,我收到错误:“未定义对(函数)的引用”。

我不知道为什么 Eclipse 会这样做,尽管 #include 都是正确的。 我什至尝试从 Properties-C/C++ General-Path & Symbols 添加路径,但没有。

谁能帮帮我?

【问题讨论】:

  • 这就是为什么我认为编程新手应该从一个普通的编辑器和基本的工具链(编译器+构建系统)开始。

标签: c++ eclipse


【解决方案1】:

您必须指定必须链接到可执行文件的共享库的名称。

假设您使用的是 GNU 工具链,您可以按照以下步骤操作:

  1. 右键单击项目,然后选择Properties
  2. 进入C/C++ Build -> Settings
  3. 选择GCC C Linker -> Libraries
  4. Libraries (-l) 中,添加您的库的名称,
  5. 如果需要,请将您的库所在的目录放在 Library search path (-L) 中。

【讨论】:

  • 我已经完成了:右键单击属性-C/C++ Build-Settings-Tool Settings-Cross G++ Linker。现在我必须把 -l 命令放在哪里?
  • “库 (-l)”附近有一个小“+”图标。
  • 好吧,我做到了,但我得到了这个错误:/usr/bin/ld: cannot find -lopenssl 为什么我错了?
  • 因为库不是这样命名的。试试 -lssl
  • 我在 Windows7 中使用 Eclipse Juno,在使用 CURL 库时遇到了同样的问题。我该如何解决这个问题?
【解决方案2】:

我也有同样的问题。我正在使用Eclipse CDT 并尝试使用OpenSSL 标头构建我的源代码,但我遇到了同样的"undefined reference" 问题。

对于那些可能也遭受此类错误的人,请尝试以下步骤:

  1. 确保使用正确的编译器(对于Ubuntu 18.04right click your project->preference->C/C++ Build->tool chain editor->use CDT internal Builder / Linux gcc(你可以尝试运行HelloWorld作为测试)
  2. C/C++ Build->settings->gcc linker,看右边有一个"+",点击并输入sslcrypto
  3. 重建您的项目,完成。

我强烈建议你学习 gcc 编译器命令行。如果您有编译问题,请始终使用终端和命令行查看是否可以编译成功,然后将成功的命令与 Eclipse 中的控制台日志进行比较,在此处您可以看到用于编译代码的实际 gcc 命令。

gcc 命令的好资源:https://www.rapidtables.com/code/linux/gcc/gcc-l.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-29
    • 2011-12-22
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多