c++

c#能调用c++吗

小亿
82
2024-12-05 11:29:33
栏目: 编程语言

是的,C# 可以调用 C++ 代码。为了实现这一目标,您需要使用平台调用(Platform Invocation Services,简称 PInvoke)技术。PInvoke 允许 C# 代码调用 C++ 编写的动态链接库(DLL)中的函数。

以下是一个简单的示例,展示了如何在 C# 中调用 C++ 代码:

  1. 首先,创建一个 C++ DLL 项目,并添加一个名为 example.cpp 的源文件,其中包含一个简单的函数:
// example.cpp
#include <iostream>

extern "C" {
    #include "example.h"
}

int add(int a, int b) {
    return a + b;
}
  1. 创建一个名为 example.h 的头文件,用于声明 add 函数:
// example.h
#ifndef EXAMPLE_H
#define EXAMPLE_H

int add(int a, int b);

#endif // EXAMPLE_H
  1. 编译 C++ 项目,生成一个名为 example.dll 的动态链接库。

  2. 在 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# 程序相同的目录中。

0
看了该问题的人还看了