复杂的动态库调用方式Clion

CMakeLists.txt

cmake_minimum_required(VERSION 3.15)
project(quoteE)

set(CMAKE_CXX_STANDARD 14)
include_directories("./include")
link_directories(lib)
##link_libraries(libMdPbParse)
add_executable(quoteE main.cpp)
target_link_libraries(quoteE libMdPbParse.so dl )
main.cpp

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <dlfcn.h>
#include <cstring>
#include <arpa/inet.h>
#include "MPPT_serialize_QuoteE.hpp"

using namespace AtgoMdPbParse;

//typedef void ( *funcpb2md)(AtgoMDHead &md, const PBHead& pb);

int main() {
    FILE *file=fopen("/home/xiaoming/RScript/quoteE/QuoteE_20190927","rb");
    if(file==nullptr){
        return -1;
    }
    std::cout<<"============1====="<<std::endl;
    /*
    void *handle =dlopen("libMdPbParse.so",RTLD_LAZY);
    if(handle ==nullptr){
        return -1;
        printf("Error:%s:dlopen\n",dlerror());
    }

    std::cout<<"============2====="<<std::endl;
    funcpb2md pfuncpb2md = (funcpb2md)dlsym(handle,"pb2md");
    
    std::cout<<"============3====="<<std::endl;
    if(pfuncpb2md==nullptr){

        printf("Error:%s:dlsym\n",dlerror());
        return -1;
    }
    */
    std::cout<<"============4====="<<std::endl;
    int count = 0 ;
    while(!feof(file)){
        std::cout<<"================="<<std::endl;
        unsigned char head[5] = { 0 };
        fread(head, 1, 4, file);
        int nLen = ntohl(*(int*)head);
        printf("%d\n", nLen);
        if (nLen > 0)
        {
            PBHead pbHead;
            pbHead.setNbyte(7, nLen);
            //char ss[200] = { 0 };
            unsigned char* p = pbHead.setPTopic();
            fread(p, 1, nLen + 7, file);
            AtgoMDHead head;
            memmove(pbHead.setPTopic(), pbHead.setPTopic() + 4, 3);
            pfuncpb2md(head, pbHead);
            AM_QuoteE* pQuoteE = (AM_QuoteE*)head.data;
            printf("%d\n", pQuoteE->time);
            count++;
        }
    }
    std::cout << "Hello, World!" << std::endl;
    return 0;
    getchar();
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

R助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值