gpt4 book ai didi

c++ - 导出类成员

转载 作者:行者123 更新时间:2023-11-28 08:26:02 34 4
gpt4 key购买 nike

具体使用 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)
发生了什么或改变了他们的订单?
如果像

这样的代码注入(inject)时,如果每个函数都被分配了它的值
 mynewclass1.newfunction1 = (void *)(newexportedfunction);

在这种情况下会发生什么情况,如果类的成员是在类构造之后分配的指针,然后错过了一个成员或更改了它们的顺序?

最佳答案

我想你忘了添加一个公共(public):(:)

mynewclass1 在加载时静态初始化为零(除非您使用的是非常旧的 Windows 版本)。如果向类中添加构造函数,行为将变得不可预测,因为很难知道静态何时有效初始化(至少是链接时依赖性)。

关于c++ - 导出类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4045947/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com