C++ 班级成员讨论出口问题
当使用DLL或代码注入时,请具体说明C++ 班级成员讨论出口问题,c++,class,dll,export,C++,Class,Dll,Export,当使用DLL或代码注入时,请具体说明 这是一个示例类,仅用于解释 class test { int newint1; char newchararray[512]; void (*newfunction1)( int newarg1 ); int newfunction2( bool newarg1, char newarg2 ) { return newint1; } } mynewclass1; 这涵盖了类中包含的最常见元素
这是一个示例类,仅用于解释
class test
{
int newint1;
char newchararray[512];
void (*newfunction1)( int newarg1 );
int newfunction2( bool newarg1, char newarg2 )
{
return newint1;
}
} mynewclass1;
这涵盖了类中包含的最常见元素现在将此函数导出到另一个DLL或应用程序时
并且遗漏了其中的一个元素,数据成员或功能成员,私有或公共
发生了什么或改变了他们的顺序?
如果每个函数在代码注入时都被赋值
mynewclass1.newfunction1 = (void *)(newexportedfunction);
如果类的成员是在类构造之后分配的指针,然后错过了一个成员或更改了它们的顺序,那么在这种情况下会发生什么 我想您忘了添加公共:(:) mynewclass1在加载时静态初始化为零(除非您使用的是非常旧的windows版本)。
如果向类中添加构造函数,则行为将变得不可预测,因为很难知道何时有效初始化静态(至少是链接时间依赖项)。请注意,我看到未定义的行为正在向您袭来。当然希望不会。。知道我期待的是什么样的行为真的很重要