Можно ли вызывать функции C # в C ++ без использования CLR. CLR выдает ошибки - PullRequest
0 голосов
/ 07 июля 2019

Я читал о CLR и смотрел учебник. Когда я добавил свой ранее существующий код C ++ в свое новое решение CLR, я обнаружил, что STD :: Thread и STD :: mutex не поддерживаются в CLR или CLR Pure.

Есть ли способ, которым я могу вызывать функции c # в моей программе на C ++ без необходимости изменять ранее существующий код? Мой код на C ++ использует WxWidgets, и я опасаюсь, что он также может привести к ошибкам, даже если я исправлю проблемы Threading и Mutex.

Код на C # очень прост, все, что мне нужно, это вернуть целое число или число с плавающей точкой. Есть ли способ добавить мою C # dll к моему пути и просто с помощью макросов вызывать эти функции?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenHardwareMonitor.Hardware;

namespace SystemMonitor
{
    class Program
    {
        public class UpdateVisitor : IVisitor
        {...}

        static int FindValue(HardwareType type, SensorType sensor)
        {
        ... some code...
        return value;
        }

        static int GetRamVoltage()
        {
            return FindValue(HardwareType.RAM, SensorType.Voltage);
        }

        static int GetCPUVoltage()
        {
            return FindValue(HardwareType.CPU, SensorType.Voltage);
        }

        static void Main(string[] args)
        {
            while (true)
            {
                //GetSystemInfo();
                Console.WriteLine(GetRamVoltage().ToString());
                //Console.WriteLine(GetRamClock().ToString());
                //Console.WriteLine(GetRamTemp().ToString());
                //Console.WriteLine(GetRamLoad().ToString());
                Console.WriteLine(GetCPUVoltage().ToString());
                //Console.WriteLine(GetCPUClock().ToString());
                //Console.WriteLine(GetCPUTemp().ToString());
                //Console.WriteLine(GetCPULoad().ToString());
            }
        }
    }
}
...