我有一个现成的产品,它支持需要用非托管C编写的自定义插件。它不支持Managed Dll,我的首选语言是c#。
需要传递回现货产品的信息非常基本,可以保存在字符串中。
所以我想我可以做到以下几点:
现在,在托管C ++和C#Dll之间进行通信非常简单。
但我无法弄清楚如何从非托管c dll调用托管c ++函数。 对一些简单的示例代码的任何帮助都会很棒。
由于
编辑: 我在下面的Alex的答案中创建了一个关于我如何做到这一点的Code Project文章。 http://www.codeproject.com/Tips/695387/Calling-Csharp-NET-methods-from-unmanaged-code
答案 0 :(得分: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) );
}
答案 1 :(得分:1)
我不认为,你可以这样做。但是你可以为产品编写一个c ++(非托管)插件。然后使用c#编写一个支持allone托管应用程序,从插件启动它并使用命名管道或套接字在它们之间进行通信。