创建可由本机和托管应用程序使用的DLL

时间:2013-11-29 07:16:28

标签: c# c++ c++-cli native managed

即使经过一段时间的搜索,我也找不到明确的答案。这似乎是一个不常见的问题:

我有一个应该放在DLL中的本机实现。该DLL应该可供本机应用程序和托管应用程序使用。

因此,如果我在C ++ / CLI中编写此DLL,我可能会暴露两件事:

  1. 可以由本机应用程序使用的平面C风格导出函数接口。
  2. 可以通过引用此DLL从任何托管应用程序(例如C#)使用的托管类
  3. 这会有用吗?纯粹的本机应用程序是否能够加载此DLL并调用公开的函数?

1 个答案:

答案 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.
}