从VC ++代码访问C#库

时间:2011-10-03 20:55:56

标签: c# winforms visual-c++

我有用VC ++编写的windows表单应用程序。我想更改此应用程序中的按钮单击(VC ++中的WInform应用程序)以命中用C#编写的函数。 有什么方法可以做到这一点。

1 个答案:

答案 0 :(得分:1)

调用C#程序集而不使用C ++ / CLI进行编译是很棘手的。我所拥有的一些想法:

a)创建一个混合程序集包装器dll(混合程序集包含本机代码和托管代码)。添加对C#程序集的引用,然后在dll中创建通过C ++ / CLI调用C#代码的函数,然后为这些函数定义dll入口点(__declspec(dllexport))。您现在可以链接到dll,因为它将提供C ++可以理解的本机接口,而内部的dll可以调用您的C#代码。 (事后想法:你可以将它编译成.lib,这比dll更容易。)

Walkthrough: Creating and Using a Static Library

b)使用Mono调用C#程序集。 Mono有一个C API,您可以使用它来加载和使用托管程序集,而无需使用c ++ / CLI。如果C ++ / CLI不是一个选项,我会这样做。

Embedding Mono

c)如果您的函数具有相对简单的输入/输出签名(没有大对象等),您可以考虑将C#函数编译为可执行文件并使用标准输入/输出来调用该函数。但是,您必须将输入参数和输出作为文本。然后让C ++启动可执行文件并将一些输入传递给它,并读取输出。