是的,C# 可以调用 C++ 代码。为了实现这一目标,您需要使用平台调用(Platform Invocation Services,简称 PInvoke)技术。PInvoke 允许 C# 代码调用 C++ 编写的动态链接库(DLL)中的函数。
以下是一个简单的示例,展示了如何在 C# 中调用 C++ 代码:
- 首先,创建一个 C++ DLL 项目,并添加一个名为
example.cpp
的源文件,其中包含一个简单的函数:
// example.cpp
#include
extern "C" {
#include "example.h"
}
int add(int a, int b) {
return a + b;
}
- 创建一个名为
example.h
的头文件,用于声明add
函数:
// example.h
#ifndef EXAMPLE_H
#define EXAMPLE_H
int add(int a, int b);
#endif // EXAMPLE_H
-
编译 C++ 项目,生成一个名为
example.dll
的动态链接库。 -
在 C# 项目中,使用
DllImport
属性声明要调用的 C++ 函数。例如,在Program.cs
文件中:
using System;
using System.Runtime.InteropServices;
class Program
{
[DllImport("example.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int add(int a, int b);
static void Main()
{
int result = add(3, 4);
Console.WriteLine("3 + 4 = " + result);
}
}
在这个例子中,我们使用 DllImport
属性指定了 C++ 动态链接库的名称(example.dll
),并设置了调用约定(CallingConvention.Cdecl
)。然后,我们声明了一个名为 add
的静态外部方法,该方法接受两个整数参数并返回它们的和。
现在,当您运行 C# 程序时,它将调用 C++ 代码中的 add
函数,并输出结果。请注意,为了使这个示例正常工作,您需要将生成的 example.dll
文件放在与 C# 程序相同的目录中。