У меня есть код устаревшего кода, реализованный в C (не C++). Я хотел бы иметь возможность вызвать несколько методов в этом C-коде из моего кода на C# (в Windows). Какой был бы лучший подход к интерфейсу между двумя языками? Обратите внимание, что метод в C не является апатридом. Нам нужно назвать два метода:Говоря с C от C#
- initialization() => это приведет к инициализации структуры данных и загрузке данных из файлов в память. Этот метод будет вызываться один раз.
- ComputeSomething (parameters) => с этим методом будет выполнено несколько вызовов от C#.
Примечание: Эти два метода на самом деле назвать несколько других методов, но это только два метода, которые мы хотели бы выставить на C# (код достаточно сложен, поэтому мы не хотим, чтобы порт на C#)
Я смог импортировать код c в визуальную студию и смог скомпилировать код успешно. Я знаю, что мы, возможно, можем реализовать код C как службу Windows, но я ищу решение, которое позволяет нам напрямую вызвать метод C из C#. Любые указатели высоко оценены! (COM-взаимодействие связано с тем, что я ищу?)
почему не выполняют свои методы на C#? – Luiscencio
Что такое скомпилированный вывод вашего кода на C? Если его .dll и поддерживает COM, вы должны просто выполнить «добавление ссылки» из Visual Studio и перейти к файлу dll. – Nate
Если вы еще этого не сделали, обертывание ваших функций в COM-классе COM и использование промежуточного взаимодействия .NET/COM кажется слишком большим количеством работы/излишества. Я просто поставил эти две функции C в DLL и получил бы доступ к ним с помощью P/Invoke, как это предложил Джейсон Эванс. – stakx