问题标签 [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.
c - 未定义的引用,gmp 库
我通过它的安装程序在 cygwin 中安装了 gmp 库。我试图用 gcc 编译一个简单的程序。
但我得到了这个:
这是我第一次尝试使用非标准库,我在这里感到困惑。我的编译器设置为 Cygwin,并且我已经完成了所有安装部分。关于什么可能是错的任何想法?谢谢你。
c++ - 未定义的参考 C++
我正在尝试编译我从 Java 转换的第一个合法程序(我运行了一个测试 hello world 类型程序来检查我的编译器并且它可以工作)。共有三个文件:
main.cpp
skewNormal.cpp
skewNormal.h
编译产生以下错误:
我在 Ubuntu 10.10 上使用 Code::Blocks。
c++ - 对函数的未定义引用
我正在使用 Linux,我有以下文件:
该函数F1()
在 中声明fileB.h
和定义fileB.cpp
。我需要在 中使用该函数fileA.c
,因此我将该函数声明为
在fileA.c
.
但是,在编译过程中,我得到了错误
怎么了?
谢谢你。
ETA:多亏了我收到的答案,我现在有了以下信息:
在fileA.h中,我有
在fileA.c中,我有
在fileB.h中,我有
在fileB.cpp中,我有
但是,我现在有错误
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 中的函数。
提前致谢
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 程序都应该能够在顶层执行?
c++ - C-回调函数模板:显式实例化模板
前提
我正在使用提供以下接口的 C 库(来自 C++):
问题
现在,我需要将函数模板注册为回调,这给我带来了问题。考虑以下代码:
这给了我以下链接器错误(在 OS X 上使用 g++ (GCC) 4.5.1,但适用于编译器版本/平台的大多数其他组合):
架构 x86_64 的未定义符号:
我觉得可以理解。
第一个“解决方案”</h2>
这很容易通过显式实例化模板来解决:
不幸的是,这不适用于我的真实代码,因为回调是在函数模板中注册的,而且我不知道该函数将针对哪一组模板参数调用,因此我无法为所有他们(我正在编写一个库)。所以我的真实代码看起来有点像这样:
第二个“解决方案”</h2>
通过调用函数隐式实例化函数模板。所以让我们这样做,但要确保调用没有实际执行(该函数有副作用):
这似乎有效,即使启用了优化(以便编译器删除死分支)。但我不确定这是否有一天会崩溃。我还发现这是一个非常丑陋的解决方案,需要一个长度的解释性注释,以免某些未来的维护者删除这个明显不必要的代码。
问题
如何实例化我不知道模板参数的模板?这个问题显然是无稽之谈:我不能。——但是有什么偷偷摸摸的方法吗?
除此之外,我的解决方法能保证成功吗?
奖金问题
代码(特别是我将函数指针转换为 的事实void*
)也会产生以下警告:
ISO C++ 禁止在指向函数的指针和指向对象的指针之间进行转换
编译时使用-pedantic
. 我可以以某种方式摆脱警告,而无需为库编写强类型 C 包装器(在我的情况下这是不可能的)?
在 ideone 上运行代码(添加强制转换以使其编译)
c++ - 将简单类添加到库时出现未定义的引用错误
我正在使用一个相当大的库,它使用 CMake 进行编译/链接。我需要添加一些功能,因此我需要向库中添加一些类。问题是,当我将一个简单的 helloWorld 类添加到库中并尝试从某个主函数调用它时,我在链接时遇到未定义的引用问题。当我查看构建的代码(库文件夹中的“CMakeFiles”)时,我的类还没有被 CMake 编译(因此,例如,那里没有 HelloWorld.o 文件)。
有人可以指出我哪里出错了吗?我需要明确告诉 CMake 编译这个类吗?(如果是,如何?)。我是 CMake 的新手,所以不知道如何解决这个问题。
我这样调用函数。``
我得到的错误消息是这样的。
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 传递一些额外的标志?
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
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
。