【发布时间】:2016-01-30 19:44:14
【问题描述】:
我创建了一个可以加载不同共享库(problem1.so、problem2.so 等...)的程序。在这个程序中,我有一个 Config 对象用作全局变量。我想知道如何在我的程序和共享库之间共享全局变量。目前,我已经这样做了:
配置.hh
struct Config {
Config();
int test;
};
extern Config config;
配置.cpp
#include "Config.hh"
Config config;
Config::Config() : test(3) {} // set test to 3
Problem1.hh // 我的一个共享库的部分主类
#include "Config.hh"
class Problem {
Problem();
};
Problem1.cpp // 部分文件
#include "Problem.hh"
Problem::Problem() {
std::cout << config.test << std::endl; // print 0 and not 3
}
问题是问题构造函数打印 0 而不是 3,就好像我的全局变量(在共享库之外完美工作)在共享库中被重置。有人知道如何解决这个问题吗?
编辑:“问题”对象不是全局对象
【问题讨论】:
-
您使用的是全局
Problem对象吗? -
可能是全局变量的初始化顺序有问题
标签: c++ global-variables shared-libraries