如何将数据从 C# 应用程序发送到 C++ DLL?

问题描述 投票:0回答:1

我有一个 C++ 图形引擎,我想用 C# 为其构建一个编辑器。我希望能够将数据从编辑器发送到引擎,例如正在使用的工具以及任何用户定义的参数。

c# c++ wpf directx clr
1个回答
1
投票

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 类库中的函数。

© www.soinside.com 2019 - 2024. All rights reserved.