zoukankan      html  css  js  c++  java
  • undefined reference to `recvIpcMsg(int, ipc_msg*)'——#ifdef __cplusplus extern "C" { #endif

    最近在弄一个进程间通信,原始测试demon用c语言写的,经过测试ok,然后把接口封装起来了一个send,一个recv。

    使用的时候send端是在一个c语言写的http服务端使用,编译ok没有报错,但是recv的使用在QT里面是C++的,编译的时候出现

     undefined reference to `recvIpcMsg(int, ipc_msg*)'

    报错。

    检查了头文件和实现文件都在,编译成动态库了都,同样的方法在C文件里调用都没有报错,搬到C++里面就都报错了,突然想起来一件事我的头文件声明没有对C++编译器专门处理。

    如下:

    /*
    *ipcmsg.h
    */ #ifndef H_MSGIPC_H #define H_MSGIPC_H

    #include <sys/types.h>
    #include <sys/ipc.h>
    #include <sys/msg.h>

    #define MSGKEY 8888  
    #define BUF_SIZE 64 
    
    
    typedef enum ipc_msg_type
    {
            APP_MSG,
            INPUT_MSG,
            GPS_MSG
    }ipc_type;
    
    typedef struct msgIpc
    {
       ipc_type type;
       char buf[BUF_SIZE];
    }ipc_msg_t;
    //send ipc msg
    extern int sendIpcMsg(key_t msgkey, const ipc_msg_t *msg);
    //recv ipc msg
    extern int recvIpcMsg(key_t msgkey, ipc_msg_t *msg);
    #endif

    如果C的方法要在C++编译器里链接使用应该加上如下宏包含

     

    #ifdef __cplusplus
    extern
    "C" { #endif #ifdef __cplusplus } #endif

    如此才能正常编译链接。

    最后修改如下就可以编过了

    /*
    *ipcmsg.h
    */
    #ifndef H_MSGIPC_H
    #define H_MSGIPC_H

    #ifdef __cplusplus
    extern "C" { #endif

    #include <sys/types.h>
    #include <sys/ipc.h>
    #include <sys/msg.h>

     
    
    
    typedef enum ipc_msg_type
    {
            APP_MSG,
            INPUT_MSG,
            GPS_MSG
    }ipc_type;
    
    typedef struct msgIpc
    {
       ipc_type type;
       char buf[BUF_SIZE];
    }ipc_msg_t;
    //send ipc msg
    extern int sendIpcMsg(key_t msgkey, const ipc_msg_t *msg);
    //recv ipc msg
    extern int recvIpcMsg(key_t msgkey, ipc_msg_t *msg);
     
    #ifdef __cplusplus
    }
    #endif

    #endif
  • 相关阅读:
    activiti5.13 框架 数据库表结构说明
    c3p0详细配置
    linux+nginx+tomcat负载均衡,实现session同步
    Lvs+Keepalived+MySQL Cluster架设高可用负载均衡Mysql集群
    java jstack dump 线程 介绍 解释
    JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
    CheckStyle使用手册(一)
    checkstyle使用介绍
    memcache启动多个服务
    temp
  • 原文地址:https://www.cnblogs.com/tid-think/p/9272218.html
Copyright © 2011-2022 走看看