我有一个 C++ 图形引擎,我想用 C# 为其构建一个编辑器。我希望能够将数据从编辑器发送到引擎,例如正在使用的工具以及任何用户定义的参数。
C++ CLR(公共语言运行时)类库简化了 C++ 和 C# 之间的互操作过程。
确保项目配置(x86 或 x64)与 C# 应用程序和 C++ CLR 类库防止兼容性 问题。
1。创建 C++ CLR 类库:
首先在 Visual Studio 中创建一个新的 C++ CLR 类库项目。此类项目允许您编写可从 C# 轻松访问的托管 C++ 代码。
2。定义托管类:
首先在 Visual Studio 中创建一个新的 C++ CLR 类库项目。此类项目允许您编写可从 C# 轻松访问的托管 C++ 代码。
MyCppCLRClass.h
#pragma once
using namespace System;
namespace MyCppCLRClassLibrary
{
public ref class MyCppCLRClass
{
public:
void SendMessageFromCSharp(String^ message);
};
}
MyCppCLRClass.cpp
#include "MyCppCLRClass.h"
#include <iostream>
namespace MyCppCLRClassLibrary
{
void MyCppCLRClass::SendMessageFromCSharp(String^ message)
{
std::cout << "Message received in C++ CLR Class: " << msclr::interop::marshal_as<std::string>(message) << std::endl;
// Process the message or perform any required actions
}
}
3.构建 C++ CLR 类库:
首先在 Visual Studio 中创建一个新的 C++ CLR 类库项目。此类项目允许您编写可从 C# 轻松访问的托管 C++ 代码。
4。创建 C# WPF 应用程序:
创建一个新的 C# WPF 应用程序项目或使用现有的项目。
5。参考C++ CLR类库:
在您的 C# 项目中,添加对已编译的 C++ CLR 类库 DLL 的引用。
6。调用托管 C++ 函数:
在您的 C# 代码中,您可以直接调用托管 C++ 类公开的函数:
using System;
using MyCppCLRClassLibrary;
namespace MyCSharpWpfApp
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
string message = "Hello from C#!";
MyCppCLRClass myCppCLRInstance = new MyCppCLRClass();
myCppCLRInstance.SendMessageFromCSharp(message);
}
}
}
7。运行应用程序:
运行您的 C# WPF 应用程序,单击按钮时,它应该调用 C++ CLR 类库中的函数。