如何在VS中链接用两种不同语言编写的两个不同项目,如C ++和C#?

时间:2011-11-25 16:18:48

标签: c# .net c++ visual-studio-2008

如何在VS中链接用两种不同语言编写的两个不同项目,如C ++和C#? 例如,我有一个用c ++编写的程序和两个数字,另一个用C#编写的程序乘以两个数字,我想在VS中将它们链接在一起。 非常感谢和最好的关注

5 个答案:

答案 0 :(得分:0)

您有两个基本选项:

  • PInvoke - 仅适用于C#到C / C ++,而不是其他方式。只能用于C API(不能通过PInvoke传递C ++对象)。

  • C++/CLI wrapper - C ++ / CLI是C ++的托管版本,可以组合托管代码和本机代码。使用它,您可以在C ++ / CLI API(可以从C#中使用)中包装C ++类/ API。 IT也是另一种方式。然而,这涉及编写比PInvoke更多的代码。

答案 1 :(得分:0)

链接你描述它的方式没有多大意义,或者至少可以解释。

在Visual Studio中,您肯定可以拥有一个包含C ++项目,C#项目和VB.NET项目的解决方案,假设这些都是类库。您构建了整个解决方案,并将所有内容编译并构建到3个独立的DLL中。

然后,如果您将解决方案应用程序或Windows窗体应用程序添加到解决方案中,如果此类项目位于C#或VB.NET中,则只需将引用添加到除C ++之外的其他项目(如果它不是托管CLI) / C ++。

使用C#/ VB.NET中的C ++项目的功能,您可能需要使用DLLImport。

答案 2 :(得分:0)

使用你的例子,最简单的选择可能是让一个程序运行另一个程序并读入它的输出。

但我怀疑这不是你要找的答案。对于本机C ++和C#,您还有其他三个明显的选项:

  1. 使用.NET COM Interop编写/生成可以使用其他语言的COM对象。
  2. 编写一些C ++ \ CLI代码,以便在C ++代码和C#代码之间进行接口。如果您不需要纯本机C ++代码,那么可以使用C ++ \ CLI
  3. 编写整个C ++部分。
  4. 使用PInvoke从C#调用C ++ DLL。

答案 3 :(得分:0)

你无法链接两个可执行文件。你可以做的是将其中一个定义为DLL并将其链接到另一个。尝试定义2个项目,C#的csporj,C ++的vcproj和另一个main(也可以是)。然后在main和两个项目之间创建依赖关系。 你还想打电话给另一个吗?

答案 4 :(得分:0)

用一种语言创建DLL文件并在另一种语言中使用它可以做这个受害者。