У меня есть несколько функций C, которые я хотел бы использовать в своем приложении C# без необходимости изменять их, как они уже есть. Есть ли ПРОСТОЙ способ их использования без необходимости разбивать их на DLL или это единственный путь вперед? Могу ли я просто указать прямой путь к месту, где находятся эти файлы, и использовать их в своем приложении C#?
C является компилируемым языком. Вам нужно скомпилировать этот код, прежде чем вы сможете его выполнить. В идеале в DLL, чтобы потом можно было вызывать их через P/Invoke. Но в противном случае нет, компилятор C# не может скомпилировать код C. Единственный другой подход, который я могу придумать, - это переписать код C в C# или обернуть его в проект C++/CLI.
Если они не в .dll/.so, то где они?
@ikegami находятся в соответствующих файлах .c, расположенных в отдельном каталоге от приложения C#.
C не является языком, который интерпретируется во время выполнения. Как вы ожидаете, что это сработает? Обрабатываются ли файлы C препроцессором с какими флагами?
Re "они находятся в соответствующих файлах .c", .c
файлы содержат исходный код, а не исполняемый код. Вы спрашиваете, как выполнять функции, поэтому они нужны вам в их исполняемой форме. Вам нужно будет их скомпилировать.
Итак, у вас есть куча файлов C, лежащих вокруг вашего проекта. Они содержат функции, которые вы хотите вызывать из кода C#. Достаточно справедливо, конечно, поэтому давайте посчитаем возможные способы достижения этого.
Отвечает ли это на ваш вопрос? Можно ли встроить код C в проект C#?