问题标签 [undefined-symbol]
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.
xcode - 在 Xcode 中,如何在我的项目设置中指定正确的库以避免链接错误?
我在尝试构建 XCode 项目时遇到未定义符号错误,我很确定这是因为链接器找不到库(顺便说一句,它是使用 curses.h 所需的库)。我正在编写一个终端程序。我得到的错误是:
有问题的代码行是:
这对你们中的一些人来说应该很容易。非常感谢帮助在项目设置中找到正确的位置并知道该放什么。
c++ - 如何编译 C++ 代码并将其与已编译的 C 代码链接?
我希望能够使用Cmockery来模拟从我正在测试的 C++ 代码调用的 C 函数。作为朝着这个方向迈出的一步,我将 Cmockery 示例run_tests.c重命名为 run_tests.cpp,并尝试编译并将其与 cmockery.c 链接:
前两个命令行(编译)是成功的,但在最后一个之后我得到:
该未定义符号来自 run_tests.cpp 的第 29 行:
run_tests() 函数在 cmockery.c 中定义。
在阅读了“ Linking C++ code with 'gcc' (without g++) ”之后,我尝试了:
但得到了相同的结果:
如何编译和链接 C++ 代码以便在 C 代码中找到符号?
c++ - 为静态库编译 SWIG Python 包装器?
这是一个菜鸟问题。我正在尝试学习如何使用 SWIG 为 C++ 库制作 python 接口。该库是专有的第 3 方库;它以头文件 (foo.h) 和静态存档 (libfoo.a) 的形式出现在我面前。
为了简化问题,我编写了一个我认为具有相同病理的示例。无论如何,相同的错误消息。
作为参考,这里是 foo.c。我只有真正的第 3 方库的头文件和存档文件。
我通过键入创建了这个库g++ -c foo.cxx && ar rcs libfoo.a foo.o
我的 SWIG 接口文件如下:
我通过键入生成 foo_wrap.cxx
然后编译。
编译成功,但是当我运行 Python 和 时import foo
,我得到一个未定义的符号错误。
这里发生了什么?问题似乎是链接步骤没有找到构造函数 TC::TC 的定义。
注意:如果我将链接步骤更改为
然后一切正常。但是,对于我没有原始源代码的真正问题,这是一个选择吗?可以从 .a 中提取 .o 吗?大概可以手动完成,但不应该有一些自动化的方法吗?
c++ - 如何确定库间依赖关系?
我的项目由几个静态库组成,它们在最后一步中链接在一起。现在我遇到了问题,库的链接顺序很重要(否则我会收到未定义的符号链接器错误)。有时我会遇到问题,我必须重新排序链接库(-lcommon -lsetup -lcontrol 等)。目前这是一个愚蠢的试验和错误:重新排序、编译、检查错误、重新排序、编译等等。
因此,我编写了一个小程序来向我展示库间依赖关系并生成要链接的库的顺序。它从nm中读取已定义的('T'、'B' 等)和未定义的符号('U'),并从'未定义的符号列表'。现在它为每个未定义的符号确定解析它的库。
但是我的程序向我展示了循环依赖......我的错误是什么?
如果它们真的存在,我根本无法链接......那么在分析 nm 输出时我错过了什么?还是分析 nm 输出不是获取这些依赖项的方法?
c++ - 结构/类中静态常量的奇怪未定义符号
要么我很累,要么发生了一些我不知道的奇怪事情,因为下面的代码导致 Foo::A 和 Foo::B 在链接时出现未定义的符号。这在一个更大的项目中尽可能地被最小化,但显示了我所看到的本质。
如果没有 std::min 函数模板,它可以正常工作,即只返回 Foo::A。在类/结构之外定义静态整数时也很好(在这个简单的情况下是全局的)。但是,一旦它们像这样在里面,链接器就找不到它们。
有人可以解释发生了什么吗?
c++ - 加载库失败,但符号可从引用的库中获得
我正在尝试为我们拥有的供应商的 C++ 库编写 Python 绑定。我正在继续前进,但这很痛苦(部分原因是我们没有图书馆的源代码)。
现在,gcc(4.4.4)抱怨一些它找不到的异常类:
但是,我在 libFOO_Elsewhere 中找到了 _ZTIN3foo4some22SomeExceptionE(使用 objdump -x),它可以在同一个 /home/djc/foo/lib/ 目录中找到,并且已经使用编译器调用上的 -l 开关进行了引用。
LD_DEBUG=all 报告以下内容(感谢 Erik 的建议):
但是,objdump -p 会为 libFOO_Sessions.so 报告此情况:
libFOO_Elsewhere(包含 _ZTIN3foo4some22SomeExceptionE)不应该也在 libFOO_Sessions 的 NEEDED 条目中吗?
compiler-errors - D 和 SDL - 功能未定义
我有这个非常简单的 D 程序(pk.d):
我有一个非常简单的 make 脚本(我在 Windows 上,但 Windows D 编译器附带一个 bash 解释器):
但是当我构建它时,我得到Error 42: Symbol Undefined _SDL_Init
它成功地导入了 SDL,并且发现 SDL_INIT_VIDEO 很好。我继续检查 SDL.d,发现有一个 SDL_Init: 的定义int SDL_Init(Uint32 flags);
。我想不通。这是我用 D 导入的第一个非 STL 库,所以希望我的错误很明显,有人能看到吗?
java - JNI 绑定 - 未定义符号:gcj_personality_v0
我正在尝试将有效的 C JNI 绑定转换为 C++,因为我想从一些 Java 代码链接到 C++ 源代码(图像处理算法的开源实现)。我让一切都在 C 中工作,这包括 Java 类、JNI 绑定的 C 版本和构建系统,并且不包括使用 C++ 源代码。
我现在正在尝试将 JNI 绑定转换为 C++,以便将 C++ 源添加到构建系统并从绑定中调用它,但我遇到了一个未定义的符号。
我的 Makefile 非常简单:
My header file is thus automatically generated with javah
and I don't appear to have mangled it when copying from .h
to .cpp
. I do not have extern "C"
blocks in the .cpp file, as guided by this post.
I also included a pragma as guided by this post: Undefined Symbol _gxx_personality_v0 on link. The pragma is #pragma GCC java_exceptions
Now, that undefined symbol (gxx_personality) seems to be well referenced/documented on the web. A number of posts point to this comment on C++/Java exception handling, which suggests using that pragma. However, after including that pragma, I get another undefined symbol that is not well covered (I get exactly 1 Google hit): _gcj_personality_v0
I'm not sure what to make of this undefined symbol, and I have no idea where else to turn. Perhaps there's just a mistake in my JNI code that could be fixed to get rid of this problem? My JNI C++ code is included below for completeness.
Thanks for looking. Your help is much appreciated.
iphone - 尝试使用 EventKit 时出现“未定义的符号”?
我正在尝试使用基于 doco 和 SimpleEKDemo 应用程序的 EventKit,但是我收到以下单个错误。
这个错误是什么意思以及建议采取哪些步骤进行故障排除(我第一次遇到这样的链接错误,我有点迷茫 - 我已经解析了我的代码与示例代码,但我看不到任何明显差异)。
请注意,在控制器的头文件中,我使用的是我拥有的事件工具包代码:
python - 为 Python 创建 C++ MPI 模块,导入错误
我有一个包装 C++ 库的 Python 模块。该库使用 MPI 并使用 mpicxx 编译。在某些机器上一切都很好,但在其他机器上我得到了这个:
因此,MPI 库中有一个未定义的符号。据我所知,mpicxx 应该链接所有内容,但事实并非如此。任何想法为什么?