0

可能重复:
在 C++ 中调用私有方法

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

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

4

4 回答 4

3

干脆不要那样做。库作者已将该函数设为私有,因此您不应调用它。阅读文档以了解您打算调用哪些函数。

于 2013-01-25T05:10:09.783 回答
1

私有方法应该对其他人私有。如果将 at 作为私有方法,为什么需要调用私有方法?出于某种原因,他们这样做了。

您可以检查调用此方法中的任何其他public或功能。但这不是访问私有方法的好方法friendInitUsbDevicesNameEnum

于 2013-01-25T05:17:49.633 回答
0

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

于 2013-01-25T05:12:21.263 回答
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)(...);
于 2013-01-25T05:13:59.687 回答