从vc++代码访问c#库



我有windows窗体应用程序写在vc++。我想改变按钮点击在这个应用程序(在vc++中的WInform应用程序),以击中c#编写的函数。有哪些可能的方法可以做到这一点

调用c#程序集而不用c++/CLI编译是很棘手的。我的一些想法:

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

演练:创建和使用静态库

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

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

最新更新