问题标签 [undefined-reference]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
17 回答
642227 浏览

c++ - 为什么模板只能在头文件中实现?

引用C++ 标准库:教程和手册

目前使用模板的唯一可移植方式是通过使用内联函数在头文件中实现它们。

为什么是这样?

(澄清:头文件不是唯一的可移植解决方案。但它们是最方便的可移植解决方案。)

0 投票
1 回答
363 浏览

makefile - 从 C 程序调用 C++ 函数

如何从 C 程序中调用 C++ 函数,这可能吗?如果可以,我该怎么做?谢谢你。

0 投票
3 回答
8238 浏览

c++ - g ++未定义对构造函数的引用

我正在针对预编译的库编译和链接 cpp 文件,并且收到“未定义的引用”错误。

首先,这是命令(有问题的库是 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

这是未定义的参考错误:

/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);

其中fpa 是预先FILE *分配为调用的结果。fopen

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

class QN_InFtrLabStream_PFile : public QN_InFtrLabStream
{
public:
QN_InFtrLabStream_PFile(int a_debug, const char* a_dbgname, FILE* a_file, int a_indexed);
(... 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) {
(... the usual constructor stuff :P ...) }

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

所以,我不明白为什么来自 trapper.cpp 的调用无法找到对这个构造函数定义的引用。的 g++ 参数-L/home/install/x86_64/lib -lquicknet3应该可以解决问题,对吧?

有任何想法吗?

谢谢,罗伊

0 投票
4 回答
31334 浏览

c++ - C++ 模板,未定义的引用

我有一个这样声明的函数:

并定义如下:

但是,当我尝试在 main() 函数中使用它时:

我从 g++ 收到以下错误:

谁能指出我正确的方向?

0 投票
8 回答
6468 浏览

c++ - C++ - 对最近创建的类的未定义引用!

我刚刚创建了这个新类:

类的定义:

现在的问题是,当我尝试在我的代码中将它用作另一个类的静态成员时:

然后在里面:VehicleManager.cpp

但它没有编译:(,我每次都会收到这个错误消息:

我真的不明白为什么,尤其是我在 VehicleManager.cpp 的全局范围内定义了静态类成员。

PS:我正在使用 Code::Blocks。

谢谢 !

0 投票
3 回答
7668 浏览

c++ - Qt 和 C++ - 未定义的插槽引用

我在 Qt 中有一个插槽的构建错误。我有一个有公共插槽的课程:

在这个类的构造函数中,我做:

我有 QLineEdit - textFrom 对象。构建错误是

:-1: 错误: collect2: ld 返回 1 退出状态

请帮帮我 (:

0 投票
2 回答
3087 浏览

c++ - 对类函数问题的未定义引用

我已经搜索了互联网和我自己的智慧来回答这个基本问题,但是,令我沮丧的是,我一直无法找到解决方案。我通常对多个头文件非常满意,但是我碰壁了。问题是我在头文件中声明并在源文件的适当名称空间中定义的函数。我正在使用 Bloodshed 在 Windows 上进行开发。

/////////////////////////// 类 Matrix4x3.h //////////// /////////////////

/////////////////////////// 类 Matrix4x3.cpp //////////// /////////////////

////////////// 主要的 ////////////////

我使用 Bloodshed,当我使用构造对象时它会显示类成员和方法的列表,但是它告诉我上面描述的方法在编译时没有被引用。如果有人有回应,我将不胜感激。

0 投票
3 回答
26036 浏览

g++ - 未定义对 'yylex()' 的引用

我正在尝试使用 flex 和 bison 创建一种简单的脚本语言。现在,我只是想让计算器工作。

不过,我无法编译它。当我运行这个makefile时:

在我的 .l 和 .ypp 文件中,我收到此错误:

如果我发出这样的命令all

它说它找不到-lfl。如果我这样做:

它回到undefined reference错误。

对不起,我对此一无所知。

编辑:我安装了 flex。我尝试将它从 -lfl 更改为 C:/GnuWin32/lib/libfl.a (我正在尝试使用 Windows,因为 Linux 在我的计算机上有奇怪的问题,而且我还没有 Mac),但它仍然有同样的错误。

0 投票
2 回答
13419 浏览

c - 为什么 linux 上的 curses 给我以下错误?

试图让 getch() 工作以捕获按键。

给我以下错误:-

0 投票
5 回答
48182 浏览

c++ - 未定义的符号“vtable for ...”和“typeinfo for ...”?

几乎是最后一步,但仍有一些奇怪的错误....

vtable和typeinfo是什么意思?