编译时出现莫名其妙的undefined symbol的可能原因

前言

公司里需要开发多个动态库链接在一起的程序,然而经常在一些地方出现莫名其妙的undefined symbol问题

解决方案

1.检查Makefile/CMakeList.txt,查看是否包含所有需要包含的文件/文件夹。 错误原因:有时候由于新添加了一个文件/文件夹,而该文件/文件夹又没有被Makefile/CMakeList.txt扫描到,这时候就会在实际运行时出现undefined symbol,原因是编译时找到了对应的头文件,却在链接时未找到需要的头文件。

2.查看对应函数在头文件和Cpp文件中是否有相同的函数结构。 错误原因:有时候往往是先把一堆头文件先写好,结果在写实现时容易忘记写一两个函数实现,然后就容易编译过了,但链接时没过,因为链接时需要把头文件和Cpp文件链接在一起。

原文地址:https://www.cnblogs.com/yemanxiaozu/p/9171670.html

时间: 2024-10-17 11:50:33

编译时出现莫名其妙的undefined symbol的可能原因的相关文章

gcc编译时对'xxxx'未定义的引用问题

gcc编译时对’xxxx’未定义的引用问题 gcc编译时对’xxxx’未定义的引用问题 原因 解决办法 gcc 依赖顺序问题 在使用gcc编译的时候有时候会碰到这样的问题,编译为.o(obj) 文件没有问题,但是编译(这一步应该是链接)为可执行文件的时候会出现找不到’xxx’的定义的情况. 本文由乌合之众 lym瞎编,欢迎转载blog.cnblogs.net/oloroso 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso 例如: g++ -o spider -

gcc编译时对’xxxx’未定义的引用问题

gcc编译时对'xxxx'未定义的引用问题 原因 解决办法 gcc 依赖顺序问题 在使用gcc编译的时候有时候会碰到这样的问题,编译为.o(obj) 文件没有问题,但是编译(这一步应该是链接)为可执行文件的时候会出现找不到'xxx'的定义的情况. 本文由乌合之众 lym瞎编,欢迎转载blog.cnblogs.net/oloroso本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso 例如: g++ -o spider -rdynamic -lpthread -lev

undefined symbol: __cudaRegisterFatBinaryEnd CUDA编译运行版本不匹配解决

如何解决pytorch 编译时CUDA版本与运行时CUDA版本不对应 在跑FPN模型时,发现本机是CUDA10.1,而pytoch==0.4.0,最高支持9.0,故安装CUDA9.0,用cuda-9.0的软连接代替cuda10.1来完成cuda版本的切换(不需要搞cudnn) 替换称cuda9.0后,重新make.sh,便解决了undefined symbol: __cudaRegisterFatBinaryEnd.一下是详细分析 如果pytorch的编译时CUDA版本和运行时CUDA版本不一致

[ c++] cmake 编译时 undefined reference to `std::cout' 错误的解决方案

cmake ..  和 make 之后,出现如下错误 Linking CXX executable ../../../bin/ModuleTest CMakeFiles/ModuleTest.dir/tmp.cpp.o: In function `main': /ModuleTest/tmp.cpp:4: undefined reference to `std::cout' tmp.cpp 内容如下 1 #include <iostream> 2 3 int main(){ 4 std::co

iOS开发-编译时Duplicate Symbol Error

今天对原来项目文件进行重新整理,根据文件内容进行分类,结果复制粘贴时没注意把一个文件复制了两遍 编译的时候就出现Duplicate Symbol Error 在网上搜素了一圈发现也有人遇到过这个问题,看了下问题的答案后找到了问题所在 http://stackoverflow.com/questions/2264455/iphone-duplicate-symbol-error

devc++编译时 undefined reference to `__imp_WSAStartup&#39;

socket编程时遇到的问题: devc++编译时 undefined reference to `__imp_WSAStartup' 原文地址:https://www.cnblogs.com/qy-blogs/p/9287145.html

基于mipsel编译Qt4.6.2版本(有具体参数和编译时遇到的问题)

1.使用的configure配置为:./configure -embedded mips -little-endian -xplatform qws/linux-mips-g++ -prefix /opt/qte462-mips -release -opensource -confirm-license -webkit -qt-zlib -qt-libpng -qt-libjpeg -qt-gif -I$QTDIR/include/libz -L$QTDIR/lib -no-qt3support

异常: undefined symbol: lua_setglobal

将Apache 与modsecurity集成后,启动Apache时,报出的异常: "..undefined symbol: lua_setglobal" 后来,发现自己安装了两个lua库.一个事手工安装,一个是centOS工具套件安装的. 删除了手工安装的lua后,一切OK. 但是,记得重新编译modsecurity. 异常: undefined symbol: lua_setglobal,布布扣,bubuko.com

./Encryptor: undefined symbol:Z11startserviceLAKJDFLJALDKJFLLLLL

在Linux下编译得Encryptor文件,但是执行./Encryptor时 报了如上错误:undefined symbol:Z11startserviceLAKJDFLJALDKJFLLLLL 原因分析:执行过程中找不到startservice这个函数的定义 ——>可能是封装startservice这个函数的.so库未找到 ——>封装startservice这个函数的库名是libsocklib3.so(存在于本地目录lib目录中) ——>通过echo $LD_LIBRARY_PATH命