功能地址

时间:2012-06-25 18:09:43

标签: c++ winapi

假设我有一个像这样定义的函数:

class Foo() {
  public:
      void bar(MyClass* p, int i, int j, CArray<CArray<int,int>,int> &a);
}

void Foo::bar(MyClass* p, int i, int j, CArray<CArray<int,int>,int> &a){
 // Function body
}

对于Win32应用程序/ DLL,该函数未“导出”,我如何能够找到bar的函数地址,获取导出函数的函数地址很容易。但是获取非导出函数的函数地址有点困难。

2 个答案:

答案 0 :(得分:1)

在一般情况下不可能这样做。

除其他问题外,如果未导出该功能,则可能不存在。优化器可以在调用函数的每个位置内联函数。如果发生这种情况,该函数将没有地址,因为它不会存在于模块中。

答案 1 :(得分:0)

如果函数在.dll中,您可以使用.def文件导出它们。它在编译后的代码中创建了一个导出表,就像定义了dllexport一样。

在此处阅读:http://msdn.microsoft.com/en-us/library/d91k01sh(v=vs.80).aspx