主程序中的函数正常,否则未定义的引用
function in main program OK, undefined references otherwise
我有一个函数,当在我的程序的主文件中定义时,它会按照我的意愿工作,并在头文件中定义时产生许多未定义的引用。
此头文件存在:
#include "Domain.h"
#include "Character.h"
class Item {
public:
Character input;
Item(Character c2);
};
Item pistol(int which, float strength);
制造问题的函数是 pistol
.它看起来像
Item pistol(int which, float strength) {
Interval i = Interval(0, 1);
Domain d = Domain(i);
Character c = Character({d}, {1});
return Item(c);
}
当我尝试将代码与我的主程序链接时,所有引用 Domain.h
和 Character.h
中的对象的调用都undefined references
,这意味着我会收到链接时间错误,例如:
undefined reference to `Character::show()'
...
undefined reference to `Interval::Interval(float, float)'
...
这些错误位于代码中不在 pistol
函数内的位置。
当我将此功能移动到我的主程序时,一切都按预期工作:
#include "Domain.h"
#include "Character.h"
#include "Item.h"
Item pistol(int which, float strength) {
// definition, see above
}
int main() {
Item w2 = pistol(2, 0.5);
return 0;
}
该功能在Item.h
/Item.cxx
中有什么问题?我需要做什么才能把它放在他们的?
undefined reference
是链接阶段错误。
您很可能错过了与编译单元的链接,错过了重新编译依赖编译单元,或者尝试让编译器从使用它的所有编译单元中看不到模板类/函数定义!
相关文章:
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 对 Scalar ::Scalar() 的未定义引用
- 对复制 CTOR 和 CTOR 的未定义引用
- 对显式实例化的模板函数的未定义引用
- TensorRT (C++ API) 对"createNvOnnxParser_INTERNAL"的未定义引用
- 2个模板化类的非模板友元函数未定义引用错误
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- 获取对function_name的未定义引用
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- 对结构方法的未定义引用
- 使用内联函数 c++ 的未定义引用
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 对 DLOPEN 的未定义引用
- QT C++中对全局变量的未定义引用
- 快速数学导致对"__pow_finite"的未定义引用
- 对 boost::system::d etail::system_category_instance 的未定义引用,从
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用