问题标签 [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.
gnu - ld:未定义的符号 vs ld:未定义的引用
GNU Binutils ld 中的这些错误有什么区别?
- 未定义参考
- 未定义的符号
我对未定义的引用有很好的理解:例如,当加载器找不到函数的实现时,就会发生这种情况。我很想知道未定义符号的原因。
c++ - 将 XCode 项目动态链接到 lib4cxx 库时,如何解决单符号链接错误?
我在 Mountain Lion 上的 XCode 4.6 下用 C++ 编写。我正在尝试添加和使用 Apache log4cxx 库。我今天早上通过 Brew 安装了库。我正在链接 liblog4cxx.dylib。我收到一个链接错误,找不到一个符号:
架构 x86_64 的未定义符号:
“log4cxx::Logger::forcedLog(log4cxx::helpers::ObjectPtrT const&, std::__1::basic_string, std::__1::allocator > const&, log4cxx::spi::LocationInfo const& ) const",引用自:
我知道它正在查找库文件,因为如果我删除它,我会得到更多与 log4cxx 相关的未定义符号错误。
相关代码基本上是:
在函数内部创建记录器对象,无论是静态的还是非静态的,都不会改变行为。此外,与静态库链接,无论是否在我的项目中定义 LOG4CXX_STATIC,都不会改变行为。
查看我正在调用的宏,我看到这个符号是执行日志操作的实际方法。如果取出日志记录调用但保留定义记录器对象的代码,则代码链接正常,如您所料。
我需要做什么才能解析最后一个符号?
蒂亚!
gcc - CentOS:使用来自 devtoolset 的 GCC 4.7 导致链接 libstdc++ 不正确(未定义的符号)
我正在使用 CentOS 6.3 的 devtoolset-1.0 来临时升级 GCC 版本。虽然我现在可以编译我的 C++ 应用程序,但最终的二进制文件缺少一些符号:
我发现,这些是一些新功能,在“旧”libstdc++ 中没有,但在较新的 libstdc++ 中。在我的系统上,安装了 libstdc++(默认版本 4.4.7)和 devtoolset-1.0-libstdc++-devel(4.7 通过 devtoolset)。有趣的是,来自 devtoolset 的 libstdc++ 再次链接到旧的:
我真正想要的是替换 libstdc++ 绑定,但我不知道如何实现。我已经尝试设置 LD_LIBRARY_PATH 并指向 devtoolset 目录,但 libstdc++ 仍设置为旧位置。符号链接也没有成功,因为它是 ld 脚本而不是实际的共享库。
c++ - ruby 中使用 C++ .so 库的未解析符号
我最近继承了 Ruby on Rails 项目的开发,专注于为两个提供一些高级图像分析功能的自定义库提供用户界面。
当我启动 webrick 服务器时,它似乎可以工作,但是当我尝试上传一些图像并且需要使用共享对象时,我得到:
我在编译库时尝试过传递 --no-undefined ,所以它不允许未定义的符号,但它编译成功。此外, ldd 不显示该库的任何未定义符号:
我知道我的问题非常具体,所以我不一定期望得到一个神奇的答案;我会很高兴任何人发布有关问题所在位置的建议。
linux - 具有多个文件的内核模块 - 未知符号
你好stackoverflowers :)
在过去的几个小时里,我一直在尝试编译+加载一个多文件模块。编译发出一个奇怪的警告,模块无法加载。这里是模块、Makefile、编译输出和 dmesg。
标题:
“主”模块文件:
其他 c 文件,它调用do_module_func()
位于“主”模块中
生成文件
我正在交叉编译,但我相信这应该不是问题。制作输出:
insmod 输出:
can't insert 'mymodule.ko': unknown symbol in module, or unknown parameter
dmesg:
mymodule: Unknown symbol do_mdule_func (err 0)
因此,模块编译时带有(链接?)警告并且模块不加载。
现在,我看到在 make 输出中似乎在编译 other_file.c 之后进行了链接尝试,但在链接之前不应该也编译 mymodule.c 吗?
谢谢!:)
php - Magento 去掉菱形问号
我的页面上有一个菱形问号,它从 mysql 数据库中获取 php 代码。
我该如何摆脱这个?
c++ - 为什么在模板类静态辅助函数中调用全局函数会导致链接器错误,而不是在非静态成员函数中调用?
我有一个使用自动工具构建系统创建静态库的项目。我希望通过制作一个链接到它的小测试程序来测试这个库。
测试程序正在 code::blocks IDE 中创建。包含标题的路径已添加到搜索目录,并添加了包含的库。
当我编译我的测试程序时,我收到以下错误:
但是,xhypot 是一个全局函数,在包含的头文件中声明real.h
为:
并在配套文件中定义real.cpp
。
nr_double_t 类型在 config.h 中定义为:
有问题的调用xhypot
发生在模板类的静态辅助函数中,如下所示:
但是,xhypot
在类的其他非静态成员函数中也使用完全相同的语法调用(即xhypot(double,double)
,如果我用该行替换nr_double_t z = xhypot (a, b);
此静态方法中的行nr_double_t z = 0.0;
,则错误消失。
这是我的整个测试程序:
以及完整的构建日志:
我在带有 gcc 4.4.6 的 Scientific Linux 6.1 上使用 code::blocks 10.05 并且我正在传递 -DHAVE_CONFIG_H 因为有很多
在源代码中,config.h
由 autoconf 生成。我还应该补充一点,当构建为程序时,代码编译得很好。我已经提取了该程序的代码子集(除了一个文件之外的所有代码)以放入该静态库中。
模板类分布在两个文件中,eqnsys.h
并且eqnsys.cpp
. 我知道这样做不是最佳做法,它可能已经完成,因为它非常大。这不是我的代码。eqnsys.cpp
包含在eqnsys.h
( #include "eqnsys.cpp"
) 的底部。静态辅助函数定义在eqnsys.cpp
. 在顶部real.h
被编辑,但如果这是相关的,则不是。将以下内容添加到顶部:#include
eqnsys.cpp
eqnsys.h
eqnsys.cpp
强制实例化并不能解决问题。如果我将给定函数更改为成员函数而不是静态辅助函数,则错误消失。这是我可能采取的路线,但问题的真正根源是什么,以便我将来可以避免它?
xcode - Xcode中包含文件的问题
我在编译 gstreamer 项目时遇到了 Xcode 中包含文件的问题。标头搜索路径包含:“/Library/Frameworks/GStreamer.framework/Versions/0.10/Headers”
当我包含一个头文件时:
#include <gst/gst.h>
CMD+click 函数跟随链接回答我“符号未找到”。
而且,我有编译问题,我确定原因就在这里。
谢谢
c++ - C++ FFT 实现(架构 x86_64 的未定义符号)
我正在尝试在 C++ 中实现 FFT。但是我收到此错误:
这是我的代码:
c++ - C++ 运行时符号查找错误,ubuntu
我有一个 C++ 函数 doSth,它将从类“canMsg”中调用一个函数“checkFrame”,如下所示
在编译期间我没有收到错误,但是当我运行它时,它会执行std::cout<<canFrame <<endl;
语句并通过创建错误来崩溃
任何想法如何解决这一问题?