【问题标题】:VS2019 Linux C++: undefined reference "dlopen", g++ -ldl compiler flag not appliedVS2019 Linux C++:未定义引用“dlopen”,未应用 g++ -ldl 编译器标志
【发布时间】:2020-07-21 16:26:57
【问题描述】:

我正在从 VS2019 到 Ubuntu 目标机器进行远程 C++ 构建。我需要在代码中加载动态库,以便在源代码中包含并调用 dlopen 和 dlsym 函数。为此,我显然需要将选项 -ldl 传递给 g++,我在属性页 C/C++->所有选项->附加选项中执行此操作。这是添加这个的正确位置吗?我没有看到另一个更合理的地方可以添加到 g++ 命令参数。这在从 VS2019 发送构建时不起作用,但如果我将相同的源移动到 Linux 并使用 g++ 直接在那里编译并使用相同的标志,它构建没有问题。我假设 -ldl 选项永远不会从 VS2019 跨到 Linux。如何正确设置或自定义修改发送到 g++ 的命令行参数?

【问题讨论】:

  • -ldl 是链接器选项,而不是编译器选项。所以你可能对属性页->链接器->所有选项->附加选项有更多的运气
  • 也试过了,但也不行
  • 根据这个页面docs.microsoft.com/en-us/cpp/linux/prop-pages/…你应该设置Linker->Input->Additional Dependencies
  • 太棒了!那成功了!我已经找了好几个小时了。谢谢

标签: c++ linux g++ cross-compiling visual-studio-2019


【解决方案1】:

一个Linux项目的配置描述在这里:https://docs.microsoft.com/en-us/cpp/linux/configure-a-linux-project?view=vs-2019

链接器属性在此处描述:https://docs.microsoft.com/en-us/cpp/linux/prop-pages/linker-linux?view=vs-2019

请参阅属性“库依赖项”。

【讨论】:

    【解决方案2】:

    这最终对我有用:设置链接器->输入->附加依赖项(在此字段中输入 -ldl)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-31
      • 2016-12-09
      • 1970-01-01
      • 2013-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多