Есть программа на c++, которая генерирует зашифрованное сообщение и выводит в файл и консоль. Программа на c# должна эти данные выводить на winforms. Как их вообще связать? Т.е. вызвать шифратор сообщения на с++ из c#, подождать пока она посчитает и выведет данные, а затем на с# в winforms выведет ответ?
Лучше переделать программу на C++ в dll, подключить его и из C# вызать соответствующий метод.
Добавим код
#include <stdio.h>
extern "C"
{
double __declspec(dllexport) Add (double a, double b)
{
return a + b;
}
}
Компилируем.
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[DllImport("TestLib.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern double Add(double a, double b);
private void button1_Click(object sender, EventArgs e)
{
var x = Add(25, 17);
MessageBox.Show(x.ToString());
}
}
}
Есть вариант запустить консольное приложение из C# и считать вывод.
Process p = new Process();
p.StartInfo.UseShellExecute = false;
// Перехватываем вывод
p.StartInfo.RedirectStandardOutput = true;
// Запускаемое приложение
p.StartInfo.FileName = "example.exe";
// Передаем необходимые аргументы
// p.Arguments = "example.txt";
p.Start();
// Результат работы консольного приложения
string output = p.StandardOutput.ReadToEnd();
// Дождаться завершения запущенного приложения
p.WaitForExit();
Информация взята из MSDN и ответов.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Скажите, пожалуйста, в рамках подхода DDD, является ли корректным рассматривать один и тот же класс как Entity и как Value object
Реально ли получить иконку из ресурсов Windows по типу объекта из DirectoryEntry?
Захотел я идти в ногу со временем, посмотрел новые фишки и плюшки C#6/7, воодушевилсяТам так всё вкусно и круто, что грех не пользоваться