假设我有一个像这样定义的函数:
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
的函数地址,获取导出函数的函数地址很容易。但是获取非导出函数的函数地址有点困难。
答案 0 :(得分:1)
在一般情况下不可能这样做。
除其他问题外,如果未导出该功能,则可能不存在。优化器可以在调用函数的每个位置内联函数。如果发生这种情况,该函数将没有地址,因为它不会存在于模块中。
答案 1 :(得分:0)
如果函数在.dll中,您可以使用.def文件导出它们。它在编译后的代码中创建了一个导出表,就像定义了dllexport一样。
在此处阅读:http://msdn.microsoft.com/en-us/library/d91k01sh(v=vs.80).aspx