C++ DLL内存在全局类解决方案
C++ DLL内存在全局类
如何在DLL里面 使用一个全局类变量?
MyClass asdasd; 这里出错、不知道为何.求高手指点
代码如下:
------解决方案--------------------
MyClass * asdasd;
此时你的MyClass还没完整定义,当然不能直接用啦。如果你实在不想用指针,头文件里这样写
extren MyClass asdasd;
包含类定义的cpp文件里这样写
MyClass asdasd;
或者你直接将MyClass asdasd;
移到你MyClass类的定义后面。但这不推荐,头文件里最好不要定义全局变量,容易导致变量冲突。
------解决方案--------------------
对鸟,头文件里不要定义全局变量这条规则也包括用指针~
如何在DLL里面 使用一个全局类变量?
MyClass asdasd; 这里出错、不知道为何.求高手指点
代码如下:
#include "stdafx.h"
int aaa =10;
MyClass asdasd; //编译时出错、
class MyClass
{
public:
MyClass();
~MyClass();
int adaad(int a, int b);
int adasad(int a, int b);
private:
};
MyClass::MyClass()
{
MessageBoxA(NULL,"构造函数","提醒",MB_OK);
}
MyClass::~MyClass()
{
MessageBoxA(NULL,"析构函数","提醒",MB_OK);
}
int MyClass::adasad(int a, int b)
{
return a*b;
}
int MyClass::adaad(int a, int b)
{
return a+b;
}
int _stdcall asdasdasdasdasd(int a, int b)
{
MyClass bbb ;//如果直接使用全局的话,直接出错,(存在全局类根本都编译不了)
aaa =111;//全局int变量 可以编译,可以使用
return bbb.adaad(a,b);
}
int _stdcall asdasdasdasdasdasdsadasd(int a, int b)
{
MyClass bbb ; //如果直接使用全局的话,直接出错,(存在全局类根本都编译不了)
return bbb.adasad(a,b);
}
------解决方案--------------------
MyClass * asdasd;
此时你的MyClass还没完整定义,当然不能直接用啦。如果你实在不想用指针,头文件里这样写
extren MyClass asdasd;
包含类定义的cpp文件里这样写
MyClass asdasd;
或者你直接将MyClass asdasd;
移到你MyClass类的定义后面。但这不推荐,头文件里最好不要定义全局变量,容易导致变量冲突。
------解决方案--------------------
对鸟,头文件里不要定义全局变量这条规则也包括用指针~