要将 const char*
API 导入 C#,您需要使用 P/Invoke 技术。P/Invoke 是一种让 C# 代码调用 C/C++ 动态链接库(DLL)中的函数的方法。以下是一个简单的示例,说明如何将 const char*
API 导入 C#。
首先,在 C++ DLL 中定义一个简单的函数:
// CPP_API.h
#pragma once
#include<string>
extern "C"
{
__declspec(dllexport) const char* GetString();
}
// CPP_API.cpp
#include "stdafx.h"
#include "CPP_API.h"
const char* GetString()
{
return "Hello from C++ DLL!";
}
接下来,在 C# 项目中创建一个 P/Invoke 定义,以便调用 C++ DLL 中的 GetString()
函数:
using System;
using System.Runtime.InteropServices;
namespace CSharp_API
{
class Program
{
[DllImport("CPP_API.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern IntPtr GetString();
static void Main(string[] args)
{
IntPtr ptr = GetString();
string result = Marshal.PtrToStringAnsi(ptr);
Console.WriteLine(result);
}
}
}
在这个示例中,我们使用 DllImport
属性导入 C++ DLL 中的 GetString()
函数。CallingConvention
设置为 CallingConvention.Cdecl
,以匹配 C++ 函数的调用约定。CharSet
设置为 CharSet.Ansi
,以便将 const char*
转换为 C# 字符串。
最后,编译 C++ DLL 并在 C# 项目中调用导入的函数。当您运行 C# 项目时,它将调用 C++ DLL 中的 GetString()
函数并输出结果。
请注意,这个示例仅用于演示如何将 const char*
API 导入 C#。实际应用中,您可能需要根据具体需求调整代码。
领取专属 10元无门槛券
手把手带您无忧上云