问题标签 [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.
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 中未定义。这会产生运行时错误。
有人看到这个问题吗?
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 文件。
有什么问题?
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 转换为“非纯”,一切正常。
当然,我可以尝试更具体一些,但可能你们中的一些人已经对正在发生的事情有所了解。
非常感谢
ruby-on-rails - RAILS,捆绑安装返回 - 未定义符号:SSLv2_method
我尝试“捆绑安装”我的 Rails 项目,但出现此错误:
我找到了这种情况(Ubuntu 和 SSLv2_method 的未定义符号),但我不明白如何在 Ubuntu 12.04 x64 中修复它
谢谢你的帮助。
UPD:它对我有用(俄语)
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
.
python-3.x - Python 控制台:ImportError PyUnicodeUCS4_FromString
谁能帮我弄清楚发生了什么以及如何解决这个错误?
当我尝试导入之前编译的模块时,会出现以下消息:
c++ - 在调用函数之前声明函数时出现链接器错误
我的游戏中有一个更新函数,其中包含以下代码:
该DrawMiniFPSCounter()
函数在名为 miniFPSCounter.cpp 的文件中声明,该文件是构建目标的一部分(我使用的是 Xcode)。构建时,我收到一个链接器错误,提示DrawMiniFPSCounter
找不到该符号。我已尝试删除上面的声明并仅调用DrawMiniFPSCounter()
,但这会导致编译期间出现“未找到符号”错误。为什么链接器很难找到这个符号?这与项目中解析符号的顺序有关吗?
编辑:我nm hrMiniFPSCounter.o | grep Draw
在构建目录中运行命令,并得到以下输出:
这是正常的吗?为什么函数名称末尾有多余的字符?
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 个小时。任何的想法?
function - 在lua中调用未定义函数时接收任何通知
在 C++ 代码中:
在 Lua 代码中:
现在我的问题是:
函数CreateWindow
将返回一个名为win
且函数resize
未定义的对象。在 Lua 中调用未定义函数时如何获得通知?
通知应包括字符串"resize"
和参数800,600
。我想修改源以将未定义的函数映射到回调函数,但它不正确。
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 中!请帮忙。