C++ 动态库的全局变量和函数中定义的静态变量

本文主要验证动态库的全局变量和动态变量影响环境,经测试验证。动态库,代码共享,数据分离,不管是什么数据。

Compute.h:代码如下:

#ifndef __COMPUTE_H
#define __COMPUTE_H

int GetResult();
int GetStaticResult();

#endif

 

Compute.cpp:代码如下:

#include "Compute.h"

static int gn_test = 1;
int GetResult(){
    ++gn_test;

    return gn_test;
}

int GetStaticResult(){
    static int s_nTest = 1;
    ++s_nTest;

    return s_nTest;
}

 

main.cpp代码如下:

#include "Compute.h"

#include <iostream>
#include <thread>
#include <chrono>

void ShowValue(){
    while(true){
        std::this_thread::sleep_for(std::chrono::seconds(2));
        std::cout << "Value:" << GetResult() << std::endl;
        std::cout << "Static value:" << GetStaticResult() << std::endl;
    }
}

int main(int argc, char**argv){
    std::thread tTask(ShowValue);

    tTask.join();

    return 0;
}

编译选项如下:

     1、先生成动态库:

g++ -fPIC -shared -o libCompute.so Compute.cpp

    2、生成执行文件,并链接动态库

            g++ main.cpp -lpthread -L . -lCompute -o test

    3、拷贝文件到搜索目录

     $ sudo cp libCompute.so /usr/lib/

    4、在2个终端运行,结果互不影响:

   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值