我有一个DLL,在那个DLL中他们暴露了一些功能,但其中一个是私有的。该函数是C_MORPHO_Device::InitUsbDevicesNameEnum(PUL o_pul_NbUsbDevice)
。
如何在我的应用程序中调用此InitUsbDevicesNameEnum
函数?
答案 0 :(得分:3)
根本不这样做。图书馆作者已将该功能设为私有,因此您不应该调用它。阅读文档以了解您打算呼叫哪些功能。
答案 1 :(得分:1)
私有方法应该是私有的给其他人。为什么你需要调用一个私有方法,如果是私有的?他们出于某种原因这样做了。
您可以在调用此方法public
时检查其他任何friend
或InitUsbDevicesNameEnum
函数。但这不是访问私有方法的好方法
答案 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)(...);