C++中构造函数的真正签名是什么?
背景:
我尝试挂钩dll的内部功能。我有pdb-Debug文件,并且能够获取函数的确切位置,包括其未修饰的名称。
该函数如下所示:
protected: __cdecl ClassName::ClassName(bool * __ptr64) __ptr64
因此,它显然是一个构造函数。
我尝试了void函数(void * pThisPointer,bool * pBoolPointer),但是由于在简单地转发调用后程序崩溃了(其他函数可以正常工作),所以我认为我的签名是错误的。
您知道用于构造函数的签名(最有可能不是虚拟的)吗?
还是您有其他想法可能出什么问题?
编辑:
我使用x64和Visual Studio 2010编译器,目标编译器应类似于Visual Studio编译器,因为它是Microsoft dll。
最佳答案
您不能直接调用构造函数。就C++而言,构造函数没有名称。换句话说,您不能调用构造函数。许多编译器会创建两个甚至三个不同的函数。你应该打给哪一个?
没有答案。您不能也不能尝试直接从代码中调用构造函数。