У меня есть скрипт на перл, который принимает файл, конвертит его в другой фотрмат, запускает код на си, производит там вычисления, записывает в другой файл, потом снова возвращается для дальнейших вычислений на перл.
Это как оно работало у других людей.
У меня получается только запустить скрипт на перл, потом открывается VS с кодом на си, который не запускается.
Как сделать, чтобы все запускалось, а не просто открывалась VS?
Для начала нужно найти интерпретатор языка C, выполненный на языке Perl. И, наконец, взять исходные коды на языке C и запустить их интерпретацию через интерпретатор языка C на языке Perl, в рамках твоего проекта.
Думаю, это самый верный метод с учетом деталей постановки твоей задачи. :)
Евгений Шатунов, да это норм метод, но это дико долго, плюс я не разбираюсь в перл
так что мне нужно найти, как сделать так, чтобы код на си запускался а не просто открывался, и думаю это сделать будет быстрее и легче
Перл тут вообще не причем.
Если открывается VS, значит у вас файл с кодом на Си выполняет просто операционная система. А значит нет программы, которой код на Си выполняется у "других людей"
TCC can be invoked from scripts, just as shell scripts. You just need to add #!/usr/local/bin/tcc -run at the start of your C source:
#!/usr/local/bin/tcc -run
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
TCC can read C source code from standard input when - is used in place of infile. Example: echo 'main(){puts("hello");}' | tcc -run https://bellard.org/tcc/tcc-doc.html#SEC3
Скрипта на С не существует. С это компилируемый язык, его нужно скомпилировтаь в исполняемый файл. Либо у вас скрипт не на С.
И дело не в перл. Перл у вас скорее всего просто запускает внешний файл.
Windows запускает ассоциированную программу - у вас visual studio.
Видимо нужно найти и поставить интерпретатор С
Нельзя просто так взять и запустить код на Си.
Сначала его нужно скомпилировать в *.exe исполняемый файл, например в студии.
Потом уже из вашего скрипта можно запускать этот файл и передавать ему какие то данные...
Ася, Здесь не нужен юпитер ноутбук, это тот же самый python.
1. Вам нужно проверить что код на Си принимает аргументы из командной строки и сохраняет результат работы в какой нибудь текстового файл.
2. Компилируйте ваш код на Си в исполняемый файл.
3. Из кода на Python передавайте исполняемому файлу данные в аргументах командной строки, потом считывайте результат работы из текстового файла.
Это очень просто, на самом деле
Ася, Конечно можно. Visual studio это и делает.
НО вам лучше попросить знакомых людей, у которых все работает это настроить.
Шаги не слишком простые, а ваши вопросы показывают что для того, чтобы все настроить их будет еще сотня-другая.
Saboteur, не в visual studio, а в visual studio code
знакомые люди - это мой босс, который сказал запустить проект, который был у него в jupyter notebook на линуксе, а мне теперь надо запустить это у себя на винде, но ничего не выходит вообще
Ася, Нужно различать вопрос и задачу.
У вас задача, для которой нужно посмотреть все нюансы и настроить.
То, что босс что-то там сказал, не означает что у исполнителя внезапно появляется квалификация все это делать.
Возможно для вас будет проще поставить виртуалбокс с линуксом и запустить все там.
Saboteur, я пыталась через виртуалку, но столкнулась с другими проблемами
да у меня может и нет такой квалицикации, но пока я разбираюсь в задаче, то она как раз и повышается
к тоже это прямо не такая уж сложная задача запустить код на си скриптом перл
просто хочу понять как это сделать максимально проще
и как это можно все сделать в visual studio code или pycharm, ибо это был бы идеальный вариант
Ася, да блин
Си это язык программирования
Перл язык программирования.
Перл это не компилятор и не интерпретатор для Си.
Разделите эти две задачи и научитесь запускать код на Си просто отдельно, не привязывайтесь к этому перлу.
Visual Studio Code это РЕДАКТОР, он не умеет запускать код на Си. В лучшем случае вы можете доставить плагин раннер и скомпилировать. Если получится.
Saboteur,
ну я вкурсе что это, но я не разбираюсь в перле, поэтому не могу переписать этот код на си и не очень понимаю как он соотносится с тем кодом на си который у меня есть
отдельно все запускается
и да у меня запускается с этим плагином
но я НЕ МОГУ ОБЪЕДИНИТЬ это
НИКАК
Saboteur, ну в общем у меня получилось таки сделать исполняемый файл с помощью codeblocks (и в visual studio code кстати тоже) и передать туда аргументы с помощью перл скрипта , так что теперь у меня все работает :)
Можно напрямую вызывать функции, написанные на C из перла. Понятное дело, что C-код перед выполнением скомпилируется, но это все происходит "под капотом" незаметно для пользователя.
Для этого нужно установить соответствующий модуль Inline.
Есть ещё perlxs, но, как по мне, слишком замороченный.