gpt4 book ai didi

c++ - g++ 未定义对独立函数的引用

转载 作者:行者123 更新时间:2023-11-28 05:23:22 25 4
gpt4 key购买 nike

这一定已经回答了一百万次了,但我找不到合适的解决方案。

我在sensor.cpp中定义了一个自由函数:

std::string printTargetGasName(enalu::CombThreshold::TargetGas){}

然后我声明了函数的原型(prototype)

sensor.hpp

std::string printTargetGasName(enalu::CombThreshold::TargetGas);

然后我在 core_enose.hpp 中包含 sensor.hpp 并尝试使用 core_enose.cpp 中的函数(enalu 只是一个命名空间)。

我收到undefined reference链接错误

core_enose.cpp:284: undefined reference to `enalu::printTargetGasName(enalu::CombThreshold::TargetGas)'

make 文件中的链接指令似乎是正确的,即 sensor.opp 在 core_enose.opp 之后:

g++ -g -Wall -Wextra -pedantic -std=c++11 [...] obj_dbg/core_enose.opp [...] obj_dbg/sensor.opp [...]

我还检查了该符号是否正确存在于 sensor.opp 文件中:

$> nm obj_dbg/sensor.opp  | grep printTarget
$> 000000000000cc9c T _Z18printTargetGasNameN5enalu13CombThreshold9TargetGasE

我也尝试过绝望的深夜措施,例如 extern ,或者将 sensor.hpp 直接包含在 core_enose.cpp 文件中。没有任何帮助,在这一点上,我对我无法回答的简单答案感到沮丧。

请注意,我没有提供代码,因为 sensor.?pp 文件相当大,其中包含一些我也在我的程序中使用的类。我上面描述的是我将此免费功能添加到其他工作应用程序所遵循的确切步骤。

你能帮帮我吗?

最佳答案

因为你的链接错误是关于 enalu::printTargetGasName 的,我怀疑你在 enalu 命名空间内的头文件中声明了该函数,但相应的 C++ 没有有命名空间外壳。这可能会在 sensor.cpp 文件中修复您。

namespace enalu
{
std::string printTargetGasName(enalu::CombThreshold::TargetGas){}
};

关于c++ - g++ 未定义对独立函数的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41027513/

25 4 0
文章推荐: javascript - Angular 中的自定义链过滤器
文章推荐: javascript - Angular2 页面刷新时未加载
文章推荐: css - 是否可以屏蔽
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com