即使经过一段时间的搜索,我也找不到明确的答案。这似乎是一个不常见的问题:
我有一个应该放在DLL中的本机实现。该DLL应该可供本机应用程序和托管应用程序使用。
因此,如果我在C ++ / CLI中编写此DLL,我可能会暴露两件事:
这会有用吗?纯粹的本机应用程序是否能够加载此DLL并调用公开的函数?
答案 0 :(得分:0)
本机DLL的编译方式类似于常规本机DLL(无/ clr)。 调用C ++ / CLI应用程序/ DLL使用C ++类通过LoadLibrary和GetProcAdress加载DLL。 您需要让上面的C ++类映射本机DLL的所有功能。 C ++类充当代理类:
示例:
原生DLL具有功能foo()
。
C ++ / CLI代码公开了一个方法foo,它看起来像:
void MyProxy::foo() {
m_foo(); // m_foo is a function pointer to foo() in the DLL obtained via GetProcAddress.
}