功能描述
Lib1为DLL动态库1,Lib1中包含一个全局类对象实例A,希望exe及其它DLL动态库模块可共用该实例A,此实例A为全局共享。
关键代码实现
IDE:VisualStudio 2015
框架:MFC(其它类似)
Lib1中COne类代码:
//Lib1中的实现
//COne类.h
#pragma once
class AFX_EXT_CLASS COne
{
public:
~COne();
COne();
public:
int a;
};
__declspec(dllimport) extern COne one; //全局类实例,声明
//Lib1中实现
//COne类.cpp
#include "stdafx.h"
#include "One.h"
#include <iostream>
using namespace std;
COne one; //全局类变量 定义
COne::COne()
{
a = 100;
cout << "COne 初始化" << endl;
}
COne::~COne()
{
}
公共h.h:用于引入One.h文件
#pragma once
#include "../MFCLibrary1/One.h"
Lib2中代码实现:定义CTwo类,该中使用类实例:one
//CTwo.h
#pragma once
class AFX_EXT_CLASS CTwo
{
public:
CTwo();
~CTwo();
int get();
};
//CTwo.cpp
#include "stdafx.h"
#include "Two.h"
#include "../include/h.h"
#include "../MFCLibrary1/One.h"
CTwo::CTwo()
{
}
CTwo::~CTwo()
{
}
int CTwo::get()
{
one.a += 1000;
return one.a;
}
EXE中调用
// TODO: 在此处为应用程序的行为编写代码。
int ret1 = one.a;
CTwo two;
int ret2 = two.get();
int ret3 = two.get();
int ret4 = one.a;
system("pause");
执行结果:COne仅实例一次!:smile::smiley:
COne 初始化
示例代码:wwa.lanzous.com/iAlACokigcf