2013-01-04 19 views
1

我有吸引我的功能的C++源代码。构建原生C++,用作.net库

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

这是我第一次尝试移植代码,所以请一步步地为我分解答案。

+0

把它放到一个DLL和P /调用它。 – chris

+1

我从来没有使用Visual C++的.NET支持,但据我所知,你可以创建一个.NET类,它在内部使用本地代码,完全无缝地和大约0努力(这也避免了必须使用显式的p /从例如c#调用)。如果我有时间,我会启动视觉工作室,只是*尝试*它。你试过了吗? –

+0

@ Cheersandhth.-Alf,就我所知,C++/CLI就是这种情况。 – chris

回答

5

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

  1. 的PInvoke
  2. 创建围绕你的C C++/CLI包装++本机代码(使静态库出来的C++本地代码)和C++/CLI生成组件可在.NET应用程序可以容易地利用。
  3. COM,即使用互操作(这是很难的所有选项中)

在我的建议最简单的方法是使用选项2,但你需要采取适当的编组的照顾。

+0

只需一个注释 - p invoke如果您希望不使用COM的基于oo的类的使用情况,请使用NASTY来处理。在这种情况下,强烈推荐CLI C++包装器。 – JerKimball

+1

是否有可用的应用程序自动P /调用给定C++ DLL中的所有可用方法? – c0D3l0g1c

+0

c0D3I0g1c,这实际上是一个很好的问题..请让我们知道链接或答案,如果你张贴在计算器上。 –

3

解决方案A:

  1. 如果你的源代码,然后编译CPP程序作为一个DLL文件。
  2. Use P/Invoke

溶液B(如果你想要的功能在静态库):

  1. 创建一个存根函数调用器和编译为DLL
  2. 同解决方案A. 2
+0

是否有可用的应用程序自动P /调用给定的C + + DLL中的所有可用的方法? – c0D3l0g1c