对子目录中类的未定义引用
Undefined reference to classes in subdirectories
我在编译我的项目时遇到问题。我有一个目录结构如下:
main/
|--common/
| |-----lib/
| | |----> help.o
| |---- help.cpp
| |---- help.h
| |---- makefile
|--prog/
| |-----bin/
| | |----> progMain
| |-----lib/
| | |----> main.o
| |---- main.cpp
| |---- makefile
|-- makefile
主生成文件首先编译通用代码,然后在 prog 中编译代码。编译步骤工作正常。问题是我得到链接器抱怨undefined reference to Help:: ...
主要的.cpp将其包含在#include "common/help.h"
prog/makefile 中用于构建可执行文件的行是
g++ -o bin/progMain lib/main.o -L../common/lib/
我只是无法让链接器在帮助类中找到代码。我试过了
g++ -o bin/progMain lib/main.o ../common/lib/*.o
g++ -o bin/progMain lib/main.o -I../common/lib/
g++ -o bin/progMain lib/main.o -I../common/ -L../common/lib/
g++ -o bin/progMain lib/main.o -l../common/lib/help.o
但这些都无济于事。始终相同的未定义引用错误。 另请注意,这是一个简化的示例,common/
和prog/
中都有多个类
您应该首先创建对象模块库:
ar -crs ../common/lib/libhelp.a ../common/lib/help.o
然后,您应该使用此库来链接可执行文件:
g++ -o bin/progMain lib/main.o -L../common/lib/ -lhelp
相关文章:
- 对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()' 错误的未定义引用