繁体   English   中英

C#库到本机C ++应用程序

[英]C# library to native C++ application

我知道我可以使用dll导入+包装(托管)在C#应用程序中使用C ++库( 问题链接>> ),但是相反吗? 如何在我的C ++应用程序中使用C#库? 我将在C#库中处理事件/操作/结果,但我的应用程序是使用C ++创建的。 例如,这是我的C ++应用程序:

//在这个例子中; Manager将是我的C#库的实例,Log是可以打印某些内容的C#库的函数。 (这只是一个例子,不起作用。用于描述一些东西来理解我的问题)

int main()
{
   if(MySystem.Start() == 0) //If there is no error
   {
      Manager.Log("System started successfully!"); //Post it to C# library!
   }
   return 0;
}

编辑:解决方案应该是本机C ++。 我不会使用C ++ \\ CLI!

编辑:只有C ++应用程序是本机的。 即我可以创建一个共享的C ++库来处理C#库。 C ++应用程序(事件)>> C ++ \\ CLI库 >> C#库 ,这种方式很有用。 有示例/主题/起点吗?

>>我的解决方案( 回答后,应该​​会对其他人有所帮助 ):我将创建一个C ++ \\ CLI共享库,并将其与本机C ++应用程序一起使用。 该库将处理我的C#库( 有关此问题的更多信息>> )。 如果不需要C#,则将C ++ \\ CLI库重新编码为本机库。 我认为这很有用。

CoreRT允许编译Windows,Linux和osx x64平台的本机库,从而避免使用C ++兼容层。 CoreRT使用NetCore,而NetCore不支持C ++ / CLI。

https://dev.to/encrypt0r/writing-native-libraries-in-c-3kl

您必须注意将您的接口从C#库公开到C ++兼容层。

在我脑海中,您可以做两件事:

  • 在C#库的顶部创建一个C API(最好的方法是在您的库中添加一个C ++ / CLI层)。

  • 为您的C#库创建一个COM接口,并通过COM对象使用该库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM