从C++调用C#

3
我一直在寻找一种从C++ DLL项目中调用C# EXE项目(VS 2008)中编写的函数的方法。如果可能的话,我可以将C#代码作为C++项目本身的一部分包含进去。但是我只能找到从C++调用C# DLL的方法。
最终我想从VB6调用C#代码,但我这样问问题是因为我认为后一种方法没有中间步骤是不可能的。
谢谢,
Ian
2个回答

6

最终我希望从VB6调用C#代码,但我这样问问题是因为我不相信后一种方式可以在没有中间步骤的情况下实现。

您可以将C#类注册为COM可见,并直接从C++或VB6调用它们。

有关详细信息,请参阅MSDN上的示例COM类以及互操作性


@mydogisbox 对于从VB6调用,这绝对是最简单的选项... 对于从C++使用,C++/CLI更容易 - 但如果唯一目的是在VB中使用,这并不是真正丑陋的。 - Reed Copsey
谢谢,但我更希望将C#代码封装起来,以便稍后可以由VB调用。它不必是C++,我只想把所有东西都放在DLL中。有什么建议吗?再次感谢。 - Ian Reynolds
我对自己的经验不足表示歉意。目前,C#代码无法组装为DLL。C#只能构建可执行文件。 - Ian Reynolds
@IanReynolds 你仍然可以使用COM,但通常情况下,如果你想要“包装”它,你会将C#代码制作成一个库。你可以有一个单独的C#项目制作一个可执行文件来使用该库,同时也可以在VB端使用。 - Reed Copsey
@ReedCopsey 我不反对这是最好的方法,但任何涉及vb6和COM的东西在我看来都很丑陋。 - N_A
显示剩余3条评论

1

您可以使用/CLR选项编译C++项目,然后从其中调用C#。为此,您需要包含vcclr.h文件,并为每个需要调用的dll添加一个using语句。

#include <vcclr.h>
#using <System.dll>

为了避免使用/clr重新编译整个项目,您也可以仅开发一个C++/CLI编写的程序集/DLL,向您的C#代码公开未管理的接口。 - Rob Walker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接