• [转]gcc连接静态库成功,g++连接静态库不成功


    原文链接:http://xiaomage.blog.51cto.com/293990/72755
    linux下用g++编译代码,在连接一个c的静态库的时候,总是提示: undefined reference to`错误,找不到库函数。
     
    main.c:(.text+0x15): undefined reference to `MemoryContextInit()'
    main.c:(.text+0x26): undefined reference to `MemoryContextDestory()'
     
    用gcc编译就可以通过。
     
    其实,代码不是面向对象的c++语言,开始没有想到是c++调用c函数的问题。
    开始是以为库的路径不对;make文件中库的顺序不对;等等方法,都没有效果。
    百试不得出路之后,才发现是extern “C”的问题。
     
    用g++编译c的库函数,没有问题,可以生成目标文件.o,但是c++的命名机制已经将调用的库函数改名称了。
    说以必须在c库函数前加上 extern “C”。
     
    如果一个一个函数转换,是可行的
    extern “C” MemoryContextInit();
    但是为了能够一次完全转换,采用将整个库的头文件引用改为如下方式:
    extern "C"
    {
    #include "../lib/libxxx.h"
    }
     
    这样就可以连接通过啦。
    
  • 相关阅读:
    resourceTree PuTTY/Plink
    error: src refspec 202110221_v1_master does not match any error: failed to push some refs to 'https://gitee.com/simadongyang/m9v1.0'
    go笔记10
    go协程池
    go笔记08
    go笔记06
    go笔记04
    go笔记03
    Git常用命令一
    ajax调用实例
  • 原文地址:https://www.cnblogs.com/zjfdlut/p/2062978.html
Copyright © 2020-2023  润新知