从非托管C Dll加载托管C++ Dll?

Cat*_*lMF 5 c# c++ unmanaged managed

我有一个现成的产品,它支持需要用Unmanaged C编写的自定义插件.它不支持Managed Dll,我的首选语言是c#.

需要传递回现货产品的信息非常基本,可以保存在一个字符串中.

所以我想我可以做到以下几点:

  1. 将我的大部分代码写在C#Dll中.
  2. 在C++管理代码中编写一个包装器,它调用我的C#方法.
  3. 在非托管C中编写一个基本的Dll,它调用托管C++ Dll.

现在,在托管C++和C#Dll之间进行通信很容易.

但我无法弄清楚如何从非托管c dll调用托管c ++函数.任何简单示例代码的帮助都会很棒.

谢谢

编辑:我创建了一个代码项目文章,关于我是如何使用Alex的答案在下面做的. http://www.codeproject.com/Tips/695387/Calling-Csharp-NET-methods-from-unmanaged-code

Ale*_*lex 6

你几乎做对了.只需将数字2和3放在同一个C++/CLI DLL中.您既可以使用.NET类,也可以从C++/CLI项目中导出C函数.

extern "C" __declspec( dllexport ) void __stdcall PureExportC(
                                                    const wchar_t* param
)
{
    CSharpAssemblyNamespace::CSharpWorker worker;
    worker.DoWork( gcnew String(param) );
}
Run Code Online (Sandbox Code Playgroud)