c++ - g++ 对构造函数的 undefined reference

标签 c++ constructor linker g++ undefined-reference

我正在针对预编译库编译和链接一个 cpp 文件,我收到“ undefined reference ”错误。

首先,这是命令(有问题的库是 quicknet3,我正在编译的程序是 trapper):

g++ -w -g -I. -g -O3 -pipe -Wall -I/home/install/x86_64/include/quicknet3 -L/home/install/x86_64/lib -lquicknet3 -lintvec -lfltvec -o trapper trapper.cpp CMyException.cpp

这是 undefined reference 错误:

/tmp/ccFuVczF.o: In function 'main': trapper.cpp:1731: undefined reference to 'QN_InFtrLabStream_PFile::QN_InFtrLabStream_PFile(int, char const*, _IO_FILE*, int)'

trapper.cpp(第 1731 行)中的调用是:

IN_PFILE = new QN_InFtrLabStream_PFile(0, "", fp, 1);

哪里fpFILE * , 作为 fopen 的结果分配提前打电话。

被调用的构造函数定义在相关的头文件(QN_Pfile.h)中,如下:

class QN_InFtrLabStream_PFile : public QN_InFtrLabStream<br/> {<br/> public:<br/> QN_InFtrLabStream_PFile(int a_debug, const char* a_dbgname, FILE* a_file, int a_indexed);<br/> (... other declarations ...) }

QN_Pfile.cc中确实给出了构造函数的定义:

QN_InFtrLabStream_PFile::QN_InFtrLabStream_PFile(int a_debug,const char* a_dbgname, FILE* a_file, int a_indexed) : log(a_debug, "QN_InFtrLabStream_PFile", a_dbgname),file(a_file),indexed(a_indexed),buffer(NULL),sentind(NULL) {<br/> (... the usual constructor stuff :P ...) }

我自己编译了quicknet3库,没有报错,安装到/home/install/x86_64/lib/libquicknet3.a

所以,我无法理解为什么来自 trapper.cpp 的调用无法找到对此构造函数定义的引用。 -L/home/install/x86_64/lib -lquicknet3 的 g++ 参数应该做的伎俩,对不对?

有什么想法吗?

谢谢, 罗伊

最佳答案

我注意到您正在混合使用 FILE*_IO_FILE*。我对后者不熟悉,你确定它们是一回事吗?

关于c++ - g++ 对构造函数的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/642066/

相关文章:

c++ - fseek 的问题

javascript - 如何编写一本书的构造函数并打印所有属性而不使用 Javascript 中的 CLASS 函数?

c++ - 多次链接单个跨平台目标文件?

c++ - 链接两个文件

c++ - 对于已定义的符号,静态库链接问题 "Undefined symbols"

c++ - 如何将多个值存储到一个数组中以便稍后打印出来?

c++ - libusb_open 在 Windows 10 上返回 LIBUSB_ERROR_NOT_SUPPORTED

c++ - 从路径获取文件扩展名的 POSIX 或 Linux API 函数

Javascript - 对象不是构造函数

c++ - 为什么这个析构函数在创建后立即被调用?