问题标签 [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 投票
1 回答
1255 浏览

c - 未定义的引用,gmp 库

我通过它的安装程序在 cygwin 中安装了 gmp 库。我试图用 gcc 编译一个简单的程序。

但我得到了这个:

这是我第一次尝试使用非标准库,我在这里感到困惑。我的编译器设置为 Cygwin,并且我已经完成了所有安装部分。关于什么可能是错的任何想法?谢谢你。

0 投票
2 回答
43922 浏览

c++ - 未定义的参考 C++

我正在尝试编译我从 Java 转换的第一个合法程序(我运行了一个测试 hello world 类型程序来检查我的编译器并且它可以工作)。共有三个文件:

main.cpp

skewNormal.cpp

skewNormal.h

编译产生以下错误:

我在 Ubuntu 10.10 上使用 Code::Blocks。

0 投票
5 回答
15144 浏览

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

我正在使用 Linux,我有以下文件:

该函数F1()在 中声明fileB.h和定义fileB.cpp。我需要在 中使用该函数fileA.c,因此我将该函数声明为

fileA.c.

但是,在编译过程中,我得到了错误

怎么了?

谢谢你。

ETA:多亏了我收到的答案,我现在有了以下信息:

在fileA.h中,我有

在fileA.c中,我有

在fileB.h中,我有

在fileB.cpp中,我有

但是,我现在有错误

0 投票
2 回答
23123 浏览

c++ - 多重定义 [...] 首先在这里定义

我正在编写一个 H264 解析器(没有 OO),但我正在尝试使用一些模块来更好地组织这些东西。

我有这个问题:

我的情况是:

宏块类型.h。只是定义

宏块表.h:

macroblocktables.cpp,为 .h 文件上的每个数组和函数定义一个数组和一个函数。

最后是我的 h.264 文件(.cpp 和 .h)。我在.h 中包括了macroblocktable.h 和macroblocktype.h,在h.264.cpp 中只包括了h.264.h。

我想使用 h.264.cpp 中的 macroblocktable.cpp 中的函数。

提前致谢

0 投票
1 回答
499 浏览

load - 可编译但不与顶层一起使用的 Ocaml 代码

我正在做一个免费课程的练习。以下 ocaml 代码在我“制作”时编译,但一旦我尝试将其放入顶层,它就会抱怨。为什么?

但是当我“cc ce”(来自emacs)这段代码到顶层时,它给了我错误

然后,有了这个错误信息,我得到了解释

http://caml.inria.fr/pub/docs/manual-ocaml/manual023.html

它说,

引用未定义的全局模块 您忽略了使用#load 将模块的实现加载到内存中。

因此,我正在尝试做:#load“localizing.cmo”。但是,现在的问题是: 没有 localizing.cmo 这是搜索结果。

我想把makefile放在这里,问题的根源不应该来自“Makefile”,而且它太大了。此外,我不应该修改makefile,因为它是由课程网站提供的。

有什么问题??谢谢你。我是否可以得出这样的结论,并非所有 ocaml 程序都应该能够在顶层执行?

0 投票
3 回答
2762 浏览

c++ - C-回调函数模板:显式实例化模板

前提

我正在使用提供以下接口的 C 库(来自 C++):

问题

现在,我需要将函数模板注册为回调,这给我带来了问题。考虑以下代码:

这给了我以下链接器错误(在 OS X 上使用 g++ (GCC) 4.5.1,但适用于编译器版本/平台的大多数其他组合):

架构 x86_64 的未定义符号:

我觉得可以理解。

第一个“解决方案”</h2>

这很容易通过显式实例化模板来解决:

不幸的是,这不适用于我的真实代码,因为回调是函数模板中注册的,而且我不知道该函数将针对哪一组模板参数调用,因此我无法为所有他们(我正在编写一个库)。所以我的真实代码看起来有点像这样:

第二个“解决方案”</h2>

通过调用函数隐式实例化函数模板。所以让我们这样做,但要确保调用没有实际执行(该函数有副作用):

似乎有效,即使启用了优化(以便编译器删除死分支)。但我不确定这是否有一天会崩溃。我还发现这是一个非常丑陋的解决方案,需要一个长度的解释性注释,以免某些未来的维护者删除这个明显不必要的代码。

问题

如何实例化我不知道模板参数的模板?这个问题显然是无稽之谈:我不能。——但是有什么偷偷摸摸的方法吗?

除此之外,我的解决方法能保证成功吗?

奖金问题

代码(特别是我将函数指针转换为 的事实void*)也会产生以下警告:

ISO C++ 禁止在指向函数的指针和指向对象的指针之间进行转换

编译时使用-pedantic. 我可以以某种方式摆脱警告,而无需为库编写强类型 C 包装器(在我的情况下这是不可能的)?

在 ideone 上运行代码(添加强制转换以使其编译)

0 投票
2 回答
1878 浏览

c++ - 将简单类添加到库时出现未定义的引用错误

我正在使用一个相当大的库,它使用 CMake 进行编译/链接。我需要添加一些功能,因此我需要向库中添加一些类。问题是,当我将一个简单的 helloWorld 类添加到库中并尝试从某个主函数调用它时,我在链接时遇到未定义的引用问题。当我查看构建的代码(库文件夹中的“CMakeFiles”)时,我的类还没有被 CMake 编译(因此,例如,那里没有 HelloWorld.o 文件)。

有人可以指出我哪里出错了吗?我需要明确告诉 CMake 编译这个类吗?(如果是,如何?)。我是 CMake 的新手,所以不知道如何解决这个问题。

我这样调用函数。``

我得到的错误消息是这样的。

0 投票
1 回答
1251 浏览

d - D2 gdc 链接错误 - 未定义引用`_D3std6stdint12__ModuleInfoZ`

我在 -v2 模式下使用带有 TDM GCC 4.5.2 的https://bitbucket.org/goshawk/gdc/downloads/gcc-4.5.2-tdm-1-gdc-r575-20110723.zip来构建 DLL。在我做的其中一个模块中import std.stdint。所以我想我应该链接到 libgphobos2 来解决这个问题,但它给了我更多的错误:

这是一个错误还是我需要向 gdc 传递一些额外的标志?

0 投票
3 回答
20316 浏览

c++ - "undefined reference to" in G++ Cpp

Can't seem to get the errors to go away. Errors are below. I have looked on google and still can't figure it out. It is not like I am new to Cpp, but have not fooled with it in a while.

Weird thing is it worked with G++ in Windows...

Errors:

  • [ze@fed0r! ---**__*]$ g++ main.cpp
  • /tmp/ccJL2ZHE.o: In function `main':
  • main.cpp:(.text+0x11): undefined reference to `Help::Help()'
  • main.cpp:(.text+0x1d): undefined reference to `Help::sayName()'
  • main.cpp:(.text+0x2e): undefined reference to `Help::~Help()'
  • main.cpp:(.text+0x46): undefined reference to `Help::~Help()'
  • collect2: ld returned 1 exit status

main.cpp

Help.h

Help.cpp

0 投票
4 回答
37724 浏览

c++ - 使用 Libc++ 未定义引用使用 Clang 进行编译

第一对太长了,无法参考。当我尝试clang++ -stdlib=libc++ ../main.cc ...使用来自 SVN 的 clang 和 libc++ 进行编译时,出现此错误。

解决方案:感谢其中一个答案,我知道解决方案。libc++不能像 libstdc++ 一样单独使用,它必须与libc++abi一起链接。不过libc++abi还没有完成,所以目前使用libc++似乎有点不完整,但完成后仍然是我的首选。

2012 年 5 月 26 日更新: libc++abi 现在已完成 C++,我一直在成功使用 clang++,如下所示clang++ -std=c++11 -stdlib=libc++ -lc++abi