获得dll导出类的私有成员与函数

获得dll导出类的私有成员与函数

测试环境visual studio 2017

A.h

1
2
3
4
5
6
7
class __declspec(dllexport) A
{
private:
int a;
private:
int geta();
}

A.cpp

1
int A::geta(){return a;}

编译成dll,在别的工程中使用

1.获得私有成员

因为成员变量实际不由dll生成,没有符号信息只需做以下更改

A.h

1
2
3
4
5
6
7
class A
{
public:
int a;
private:
int geta();
}

可以直接改变成员变量的控制权限

main.cpp

1
2
A obj;
obj.a = 1;

2.获得私有成员函数

成员函数在dll中有导出信息,直接将private改成public会导致编译器无法找到符号信息。可以借用友元函数去调用

A.h

1
2
3
4
5
6
7
8
class A
{
friend int main();
public:
int a;
private:
int geta();
}

main.cpp

1
2
3
4
int main(){
A obj;
a.geta();
}