具体使用 DLL 或代码注入(inject)时
这是一个示例类,仅用于解释
class test
{
int newint1;
char newchararray[512];
void (*newfunction1)( int newarg1 );
int newfunction2( bool newarg1, char newarg2 )
{
return newint1;
}
} mynewclass1;
涵盖了类中包含的最常见元素
现在将此函数导出到另一个 DLL 或应用程序时
并错过了其中的一个元素,数据成员或函数成员,私有(private)或公共(public)
发生了什么或改变了他们的订单?
如果像
mynewclass1.newfunction1 = (void *)(newexportedfunction);
在这种情况下会发生什么情况,如果类的成员是在类构造之后分配的指针,然后错过了一个成员或更改了它们的顺序?
最佳答案
我想你忘了添加一个公共(public):(:)
mynewclass1 在加载时静态初始化为零(除非您使用的是非常旧的 Windows 版本)。 如果向类中添加构造函数,行为将变得不可预测,因为很难知道静态何时有效初始化(至少是链接时依赖性)。
关于c++ - 导出类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4045947/