从我读到的here可以比较两个指向成员函数的指针是否相等。然而,这篇文章似乎只涵盖了不涉及 DLL 的单个可执行文件的情况。
是否可以使用 DLL 检查两个函数是否相等?假设我们有
class DLL A
{
public:
virtual bool aaa();
};
在DLL中有一个变量
bool DLL (A::*dllpointer)() = &A::aaa;
我们在可执行文件中也有一个变量
bool (A::*exepointer)() = &A::aaa;
当我试着比较两者时
if (dllpointer == exepointer)
它的工作原理就好像两者不相等一样。这可能是预期的行为,但我想知道是否有可能克服此限制以便比较返回 true
最佳答案
比较指针(无论它们是指向成员函数、成员变量还是其他任何东西)只会告诉您指针是否指向同一事物——如果它们指向“同一事物的不同实例”则不会相同的属性”。由于“EXE 的”class A
的成员函数不可能与“DLL 的”class A
的函数相同,因为它们是称为同名,你不能指望指针是相同的。不,没有真正的方法可以解决这个问题。您可以比较函数的“内容”,看看代码是否相同,但这需要知道函数的长度,这不是一件容易的事。
关于c++ - 如何比较成员指针函数与 Microsoft Visual C 中涉及的 DLL 的相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16279688/