使用DLL或代码注入特定时 这是一个仅用于解释的示例类
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);
在这种情况下会发生什么,如果类的成员是在课程构建后分配的指针然后错过了一个成员或者改变了他们的订单?
答案 0 :(得分:1)
我想你忘了添加一个公共:(:)
mynewclass1在加载时被静态初始化为零(除非您正在处理非常旧版本的Windows)。 如果向类中添加构造函数,则行为将变得不可预测,因为很难知道静态何时被有效初始化(至少是链接时依赖性)。