Страницы

Поиск по вопросам

среда, 17 июля 2019 г.

Вызов и подключение программы на c++ из c#

Есть программа на c++, которая генерирует зашифрованное сообщение и выводит в файл и консоль. Программа на c# должна эти данные выводить на winforms. Как их вообще связать? Т.е. вызвать шифратор сообщения на с++ из c#, подождать пока она посчитает и выведет данные, а затем на с# в winforms выведет ответ?


Ответ

Лучше переделать программу на C++ в dll, подключить его и из C# вызать соответствующий метод.
C++
Запускаем Visual Studio .NET. Создаём новый проект File->New->Project. Выбираем Visual C++ Project, На вкладке Templates->Visual C++, Выбираем “Win32 Project”. Выбираем имя для проекта, например TestLib. Нажимаем OK. В следующей форме выбираем Application Type: DLL и Empty Project. Добавим в "Source File" New Item->C++ File. Добавим код
#include extern "C" { double __declspec(dllexport) Add (double a, double b) { return a + b; } } Компилируем.
C#
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()); } } }

Комментариев нет:

Отправить комментарий