G++删除了无用的功能?未定义的引用
g++ removes useless function? Undefined reference
我有带有声明的hpp文件:
namespace X {
class Y {
public:
[other functions]
inline float basicFunction();
int someFunction();
[other functions]
};
}
在 cpp 文件中:
namespace X {
[implementations etc.]
inline float Y::basicFunction() {
return someValue * someMath / moreMath;
}
int Y::someFunction() {
return basicFunction() * 100;
}
[other functions]
}
我正在其他 cpp 文件中使用它,但我认为这不是问题。编译方式:
g++ -c someclass.cpp -o someclass.o -std=c++11
g++ -c main.cpp -o main.o -std=c++11
g++ main.o someclass.o -o main -std=c++11 -O0
抛出错误:
main.o: In function `main':
main.cpp:(.text+0x4d9): undefined reference to `X::Y::someFunction()'
为什么?我怎样才能正确编译它?
我知道someFunction()
是没有用的,但这被叫了很多次,我就是喜欢这样。
上面的所有代码都不是真实的,所以可能有错误,但在我的程序上它(我认为)是正确的
我尝试了许多组合(两个函数具有相同的返回类型,都是内联的,没有内联等)都没有效果。
已解决。函数不能是内联的。
仍然不知道为什么在内联删除后经过几次尝试后它起作用,但没关系。
解释为什么此代码中的函数不能内联很简单。编译器在看到"内联"时,不要创建指向函数的指针,而是将代码粘贴到引用的位置。
只是我的错误...
相关文章:
- 对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()' 错误的未定义引用