在c ++中调用私有函数

时间:2013-01-25 04:59:50

标签: c++

  

可能重复:
  Calling private method in C++

我有一个DLL,在那个DLL中他们暴露了一些功能,但其中一个是私有的。该函数是C_MORPHO_Device::InitUsbDevicesNameEnum(PUL o_pul_NbUsbDevice)

如何在我的应用程序中调用此InitUsbDevicesNameEnum函数?

4 个答案:

答案 0 :(得分:3)

根本不这样做。图书馆作者已将该功能设为私有,因此您不应该调用它。阅读文档以了解您打算呼叫哪些功能。

答案 1 :(得分:1)

私有方法应该是私有的给其他人。为什么你需要调用一个私有方法,如果是私有的?他们出于某种原因这样做了。

您可以在调用此方法public时检查其他任何friendInitUsbDevicesNameEnum函数。但这不是访问私有方法的好方法

答案 2 :(得分:0)

没有直接的方法来实例化类并调用其私有方法。

答案 3 :(得分:0)

私有方法是否也已导出?我怀疑它(为什么他们会导出一个私有方法?)。但是如果导出它,则可以使用 dumpbin / exports 命令查看修饰的方法名称,然后使用GetProcAddress获取指向该方法的函数指针并调用该类的实例。类似的东西:

HMODULE hModule = LoadLibrary(L"thedll.dll");
(C_MORPHO_Device::*pMethod)(PUL) = reinterpret_cast<(C_MORPHO_Device::*)(PUL)>(GetProcAddress(hModule, L"InitUsbDevicesNameEnum@_ABunchOfSymbolsHere"));

C_MORPHO_Device device;
(device.*pMethod)(...);