问题标签 [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.

0 投票
1 回答
752 浏览

linux - 未定义的符号,即使有明确的链接

过去一天一直在处理链接器地狱,并想我会把它扔在那里,看看是否有人可以帮助我。

我正在构建两个共享库:一个称为“libhttp”,它具有一些用于 http 协议的帮助函数,似乎正在构建更好或更坏的 OK。第二个称为“libvpcutil”,它导致了问题。它取决于 libhttp 中的符号,因此我将其链接到 libhttp。这是编译指令(从 make 文件中分解出来的),其中包含一些小东西,比如我个人的 openssl 生成路径:

编译和链接成功完成。希望您注意到 http/libhttp.so.1.0 的链接步骤。

现在,如果我在 libhttp.so.1.0 上执行 nm,我会得到以下输出(以及其他输出):

但是当我在 libvpcutil.so.1.0 上做一个 nm 时,我基本上得到:

我显然在这里剪断了,但我被困在这里的是符号在 libhttp 中明确定义,我为 libvpcutil 链接它,但随后符号在 libvpcutil 中未定义。这会产生运行时错误。

有人看到这个问题吗?

0 投票
2 回答
2659 浏览

xcode - 如何将文件添加到 Xcode 项目?(编写 Unity 插件)

我敢打赌我的问题是非常基本的,所以请原谅我对 Xcode 不是很有经验,因为我在 Unity 工作并为我们的 iOS 项目使用现成的插件,所以直到现在才真正需要深入研究 Xcode。

我想编写一个非常基本的自定义插件,但无法让 Xcode 接受它。我按照 Unity 页面上的教程进行操作,并将我的 .h 和 .m 文件添加到 Assets / Plugins / iOS,其中(如教程所述)它们将自动合并到 Xcode 中。

构建后,Xcode 抛出两个错误: *"Undefined symbols for architecture armv7: "__XY", referenced from: __Z19RegisterMonoModulesv in RegisterMonoModules.o"* 和 armv6 相同。

正如我在这里读到的类似问题,这是因为文件没有添加到 Xcode 项目中,尽管事实上它们应该自动添加。在 Xcode 中,我可以在 Project Navigator 中看到我的两个文件。我还在 Build Phases 列表中看到了我的 .mm 文件。

有什么问题?

0 投票
0 回答
983 浏览

c++ - Cython:使用来自基类的纯虚方法的 C++ 共享库和未定义符号

我使用 g++ 和 -fPIC(使用 eclipse)构建了一个 .so C++ 库。

仍然使用eclipse,我链接了这个库并在另一个C++项目中使用它没有任何问题。

但是,当我使用相同的库构建 Cython 项目以生成 python 扩展时,使用:

“libelp.so”是提到的库,构建也很好:我得到了我的 cyelp.so 库。

当我在运行时从 python 端脚本从库中获取特定类时,就会出现问题:

这是我的 cython 类(继承自 ALabSimulationTime:LabSimulationTime 类,实现方法 FireEvent() - 在 LabSimulationTime 中声明为“纯虚拟”的方法):

在这里,我的 python 加载尝试:

最后,这是错误消息:

事实是,如果我从头文件中重新定义 ALabSimulatorTime 类中的“FireEvent()”方法,则不会发生这种情况:

但是如果我从“.cpp”文件重新定义方法,确实会发生:

注意:如果我从基类“LabSimulatorTime”将 FireEvent 转换为“非纯”,一切正常。

当然,我可以尝试更具体一些,但可能你们中的一些人已经对正在发生的事情有所了解。

非常感谢

0 投票
1 回答
1691 浏览

ruby-on-rails - RAILS,捆绑安装返回 - 未定义符号:SSLv2_method

可能重复:
未定义符号:运行捆绑安装时的 SSLv2_method

我尝试“捆绑安装”我的 Rails 项目,但出现此错误:

我找到了这种情况(Ubuntu 和 SSLv2_method 的未定义符号),但我不明白如何在 Ubuntu 12.04 x64 中修复它

谢谢你的帮助。

UPD:它对我有用(俄语)

http://awolf.ru/rails-on-ubuntu-with-rvm/

0 投票
1 回答
14899 浏览

c++ - C++:使用 dlopen() 加载共享库时未定义的符号

当我尝试使用 dlopen() 将共享库加载到另一个共享库时遇到问题。我检查了所有关于如何正确使用 dlopen() 的教程。所以这里是简化的代码:

主共享库包含一个具有纯虚函数的类,子共享库(又名插件)必须实现该类。此外,它还有一些其他功能,这些功能是通过默认行为实现的。我创建了一个宏,它被添加到每个插件中,以便有一个符号来加载和创建类。

主共享库

插件.h:

插件.cpp:

构建并链接 main.so

子共享库只实现纯虚拟功能。另一个函数可以被覆盖,尽管它是可选的。

子共享库

插件-impl.cpp

这些是构建和链接子共享库的行。

构建和链接 sub.so

这是打开子共享库的行。我试过 LAZY,现在,现在 | GLOBAL 等等,没有任何影响。

dlopen() 在主共享库的某处调用:

其中大部分工作得很好。但是,当我尝试将子共享库加载到主共享库中时,dlopen 抱怨bool A::func2() const. 该函数确实只存在于主共享库中,所以我想它无论如何都必须导出。请帮帮我!我很迷茫!

解决方案

因为我无法更改可执行文件,所以我必须通过将以下选项添加到 g++ 来链接主共享库和子共享库:

使用此设置,无需设置LD_LIBRARY_PATH.

0 投票
0 回答
2926 浏览

python-3.x - Python 控制台:ImportError PyUnicodeUCS4_FromString

谁能帮我弄清楚发生了什么以及如何解决这个错误?

当我尝试导入之前编译的模块时,会出现以下消息:

0 投票
1 回答
89 浏览

c++ - 在调用函数之前声明函数时出现链接器错误

我的游戏中有一个更新函数,其中包含以下代码:

DrawMiniFPSCounter()函数在名为 miniFPSCounter.cpp 的文件中声明,该文件是构建目标的一部分(我使用的是 Xcode)。构建时,我收到一个链接器错误,提示DrawMiniFPSCounter找不到该符号。我已尝试删除上面的声明并仅调用DrawMiniFPSCounter(),但这会导致编译期间出现“未找到符号”错误。为什么链接器很难找到这个符号?这与项目中解析符号的顺序有关吗?

编辑:我nm hrMiniFPSCounter.o | grep Draw在构建目录中运行命令,并得到以下输出:

这是正常的吗?为什么函数名称末尾有多余的字符?

0 投票
7 回答
28425 浏览

ios - 在 Xcode 4.5 中使用 ZXing 库时架构 armv7 的未定义符号

我想要做什么

在我的 iPhone 项目中集成Zxing二维码阅读器框架。我从这里查看了 ZXing sdk 。我运行了 ZXing 附带的名为 ScanTest 的示例项目,没有任何问题。但是当我尝试将库与我的项目集成时,我得到了提到的错误。

项目规范

  • 目标操作系统:iOS 6.0
  • 部署目标:iOS 5.0 或以上。
  • 测试:iPhone 4 和 iPhone 3GS。
  • Xcode:Xcode 4.5.1
  • ZXing版本:2.0

问题

当我构建时,在ZXing 自述文件中执行了每个集成步骤后,我都会遇到构建错误,例如

有27个这样的错误..我只复制了前两个。

我发现了什么

好吧,我经历了这个这个这个这个,这个,这个这个这个stackoverflow中的线程,都带有相同的错误消息。没有一个解决方案对我有用。

然后我在 ZXing 论坛上发现了这个封闭的帖子,讨论了同样的问题。从那次讨论中,一些可能的解决方案(对某些人有效)

第一个错误是(可能)因为您没有将 main.m 重命名为 main.mm。第二个错误是(可能)因为您没有链接到小部件库

我还重命名了我的 main.m,交叉检查了我是否添加了库,只是发现我确实有。所以事实并非如此。

在我将库的体系结构更改为“标准(armv7,armv7s)”以匹配我的主要项目后,我能够成功编译应用程序。

我的项目、目标、库项目(用于调试、分发、发布)架构为Standard (armv7, armv7s). 所以那里也没有运气。

然后他们关闭了这个问题,

zxing 项目已更新为添加 armv7s 架构并删除 armv6 架构。这些更改是 (1) 为 armv7s 的 iPhone 5 构建和 (2) 构建所必需的,因为 Xcode 4.5 不包括对 armv6 的支持。如果您有自己的项目文件,则需要自己进行这些更改。这些是并非特定于 zxing 的一般更改,因此如果您遇到问题,您可以在 StackOverflow 等一般论坛中获得更多/更快的帮助。

所以我在这里,在 StackOverflow 中。

还有一点

在 ZXing 集成README 文件中,集成的第一步是,

1) 在“ ”下找到“ZXingWidget.xcodeproj”文件zxing/iphone/ZXingWidget/。将 ZXingWidget.xcodeproj 拖放到 Xcode 项目的“组和文件”侧边栏的根目录下。将出现一个对话框——确保在单击“添加”之前未选中“复制项目”并且“参考类型”为“相对于项目”。或者,您可以右键单击项目导航器并选择“将文件添加到“MyProject””。

当我将 ZXingWidget.xcodeproj 文件拖到我的项目中时,没有对话框。该项目直接添加到项目中,我无法设置“复制项目”和“引用类型”属性。不知道是Xcode 4.5的新特性还是bug。根据 README 文件,这是我无法正确遵循的唯一步骤。

好吧,你拥有我所拥有的所有信息。我一直试图解决这个问题 6 个小时。任何的想法?

0 投票
1 回答
370 浏览

function - 在lua中调用未定义函数时接收任何通知

在 C++ 代码中:

在 Lua 代码中:

现在我的问题是:

函数CreateWindow将返回一个名为win且函数resize未定义的对象。在 Lua 中调用未定义函数时如何获得通知?

通知应包括字符串"resize"和参数800,600。我想修改源以将未定义的函数映射到回调函数,但它不正确。

0 投票
1 回答
365 浏览

java - Xcode 4.5.1:链接器错误:NSJavaVirtualMachine,找不到架构 i386 的符号

我正在尝试从目标 C、iPhone 5 应用程序中调用 Java 类。我正在使用 Xcode 4.5.1。在这个阶段,我什至无法加载虚拟机而不会出现以下错误:

架构 i386 的未定义符号:

“_OBJC_CLASS_$_NSJavaVirtualMachine”,引用自:main.o ld 中的 objc-class-ref:未找到架构 i386 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

这些是我遵循的步骤,

1) 在 main.m 中:

2)我通过以下方式添加了JavaVM.Framework:(右键单击)框架->“将文件添加到项目”-> JavaVM.Framework->(将项目复制到目标组的文件夹并创建文件夹引用...->单击添加

(它也出现在 Build Phases -> Link Binary with Libraries)

3) 在 info.plist 中,添加了以下属性:

Java 类路径和 Java 根目录

两者都设置为我存储 Java 文件的全局目录。

我正在尝试调用 Java 类的 add 和 get 函数Vector。但我似乎根本无法将 VM 加载到 Xcode 中!请帮忙。