我如何在VS中链接用两种不同语言(如c++和c#)编写的两个不同项目?
本文关键字:项目 两个 两种 链接 c++ 语言 VS | 更新日期: 2023-09-27 18:15:50
如何在VS中链接用两种不同语言(如c++和c#)编写的两个不同项目?例如,我有一个用c++编写的程序和两个数字,另一个用c#编写的程序乘以两个数字,我想在VS中将它们链接在一起。非常感谢并致以最良好的敬意
您有两个基本选项:
-
PInvoke -只适用于c#到C/c++,而不是其他方式。只能用于C api(你不能通过PInvoke传递c++对象)
-
c++/CLI包装器——c++/CLI是c++的托管版本,它可以结合托管代码和本地代码。使用它,您可以将c++类/api封装在c++/CLI api中(然后可以从c#中使用)。它也以另一种方式工作。但是,这需要编写比PInvoke更多的代码。
链接你描述它的方式没有多大意义,或者至少是开放的解释。
在Visual Studio中,你当然可以拥有一个包含c++项目、c#项目和VB的单一解决方案。NET项目,这些都是类库。您构建整个解决方案,并将所有内容编译并构建到3个独立的dll中。
然后,如果您添加控制台应用程序或windows窗体应用程序的解决方案,如果这样的项目是在c#或VB。如果它不是一个托管的CLI/c++,你可以简单地将引用添加到除c++以外的其他项目。
从c#/VB中使用c++项目的功能。你可能需要使用DLLImport.
使用您的示例,最简单的选择可能是让一个程序运行另一个程序并读取其输出。
但我怀疑这不是你想要的答案。对于原生c++和c#,您还有三个明显的选项:
- 使用。net COM互操作来编写/生成可以从其他语言使用的COM对象。
- 编写一些c++ 'CLI代码来连接c++代码和c#代码。如果您不需要纯本地c++代码,那么可以使用c++ 'CLI 编写整个c++部分。使用PInvoke从c#调用到c++ DLL。
不能链接两个可执行文件。你所能做的就是将其中一个定义为DLL并将其链接到另一个。尝试定义2个项目,csporj用于c#, vcproj用于c++和另一个main(可以是两者之一)。然后在主项目和两个项目之间创建依赖项。
用一种语言创建DLL文件并在另一种语言中使用它可以做到这一点。