C# 构建本机c++;用作.net库 我有C++的功能性代码,这对我很有吸引力。

C# 构建本机c++;用作.net库 我有C++的功能性代码,这对我很有吸引力。,c#,c++,build,code-conversion,C#,C++,Build,Code Conversion,要从.net应用程序引用此代码或将此代码构建为.net程序集(最好是c#),需要/需要付出哪些努力/工作 这是我第一次尝试移植代码,因此请逐步为我细分您的答案。解决方案A: 如果您有源代码,则将CPP程序编译为DLL文件 解决方案B(如果您想要的功能位于静态库中): 创建一个存根函数调用程序并将其编译为DLL 与解决方案A.2相同 解决方案A: 如果您有源代码,则将CPP程序编译为DLL文件 解决方案B(如果您想要的功能位于静态库中): 创建一个存根函数调用程序并将其编译为DLL 与解决方案

要从.net应用程序引用此代码或将此代码构建为.net程序集(最好是c#),需要/需要付出哪些努力/工作

这是我第一次尝试移植代码,因此请逐步为我细分您的答案。

解决方案A:

  • 如果您有源代码,则将CPP程序编译为DLL文件
  • 解决方案B(如果您想要的功能位于静态库中):

  • 创建一个存根函数调用程序并将其编译为DLL
  • 与解决方案A.2相同
  • 解决方案A:

  • 如果您有源代码,则将CPP程序编译为DLL文件
  • 解决方案B(如果您想要的功能位于静态库中):

  • 创建一个存根函数调用程序并将其编译为DLL
  • 与解决方案A.2相同

  • 有几种方法可以做到这一点

  • 平沃克
  • 在C++本地代码中创建C++/CLI包装器(用C++本地代码制作静态库),C++ C++ CLI生成程序集可以很容易地在.NET应用程序中使用。
  • COM,即使用互操作(这在所有选项中都很困难)

  • 在我的建议中,最简单的方法是使用选项2,但您需要注意正确的封送。

    有几种方法

  • 平沃克
  • 在C++本地代码中创建C++/CLI包装器(用C++本地代码制作静态库),C++ C++ CLI生成程序集可以很容易地在.NET应用程序中使用。
  • COM,即使用互操作(这在所有选项中都很困难)


  • 在我的建议中最简单的方法是使用选项2,但您需要注意正确的封送处理。< /P>将它放入DLL和P/调用它。我从未使用VisualC++的.NET支持,但我理解它,您可以创建一个.NET类,它内部使用本机代码,完全无缝,并用大约0的努力。(这也避免了使用显式的p/invoke,例如c#)如果我有时间我会烧掉VisualStudio,然后试试它。@阿尔夫,据我所知,C++是这样的。把它放到DLL和p/jk中。我从未使用VisualC++的.NET支持,但是我理解它,你可以创建一个.NET类,它在内部使用本地代码,完全无缝和机智。h大约为0(这也避免了使用显式的p/invoke,例如c#)。如果我有时间,我会启动visual studio并试一试。你试过吗?@Cheersandhth.-Alf,据我所知,C++/CLI就是这种情况。如果你想在没有COM的情况下使用基于oo的类,只需一条注释-p invoke就很难处理了。在这种情况下,强烈建议使用CLI C++包装器。是否有一个应用程序可以自动/调用给定的C++ DLL C0D3I0G1C中的所有可用方法,这实际上是一个好问题。如果你在STACKORMOBUSS.STOC0D3L0G1C上发布它,请让我们知道链接或答案。@如何计算所需的参数?一个可能的解决方案是一个正则表达式,它可以识别给定C++类中的参数以及参数。结果可以是用p/Unjk方法调用来构造C++类。如果你想在没有COM的情况下使用基于OO的类,只需要一个注释-p调用。在这种情况下,大量推荐CLI C++包装器。有一个应用程序可以自动调用/调用一个给定的C++ DLL C0D3I0G1C中的所有可用方法,这实际上是个好问题。如果你把它放在StAdvExcel上,请让我们知道链接或答案。@ C0D3L0G1C:它如何计算出所需的参数?一个可能的解决方案是一个正则表达式,它可以识别给定C++类中的参数。结果可以用来用p/Unjk方法调用来构建一个C类。在给定的C++ DLL中,是否调用了所有可用的方法?是否有一个应用程序可以自动调用/调用给定的C++ DLL中的所有可用方法?