2014-02-17 3 views
2

На этот раз у меня есть несколько более сложный вопрос. Я написал короткую программу Perl, где мой последний вывод находится в массиве. Я хочу выполнить скрипт C++ с расширением файла .hpp в моем скрипте Perl для каждого элемента моего вывода (я загрузил исходный код из браузера генома UCSC). Это очень сложно для меня, так как я начинаю программировать в целом и ничего не знаю о C++. Я проделал некоторое чтение, и я думаю, что для меня лучше всего использовать qx-вызов. Я пробовал это, и он просто открывает .hpp-файл в текстовом редакторе при запуске моего скрипта Perl. Я не уверен, что это связано с тем, что я ошибочно назначил расширение .hpp-файла для открытия редактором или мне нужен компилятор для запуска файлов .hpp в целом.Выполнение программы на C++ из Perl-скрипта; требуется ли компилятор?

my $info = qx(primercheck.hpp); 
print "primercheck.hpp is: $info\n"; 
+0

Я только что понял, что я не задал строго вопрос ... Итак; мне нужен компилятор для выполнения файла .hpp C++ из Perl-программы? Большое спасибо :) – user3309360

+0

«C++ script» - это скрипт или это исходный код? – parrowdice

+0

Исходный код, извините. – user3309360

ответ

3

.hpp это файл заголовка, который обычно содержит только макросы и декларации, а не исполняемый код. Он используется для указания интерфейса для кода в файлах .cpp и не может быть скомпилирован сам по себе.

Типичная программа на С ++ состоит из нескольких файлов .cpp и .hpp, которые должны быть скомпилированы в сочетании, а затем связаны друг с другом и с библиотечными файлами для создания исполняемого образа.

Так что да, вам нужен компилятор, и многое другое!

+0

О, ну ... В этом случае я сделаю небольшое чтение, прежде чем попробовать что-нибудь еще. Я просто надеялся на более простой способ, поэтому мне не нужно слишком многому учиться в C++ :) Большое спасибо! – user3309360

0

Предполагая, что вы на * NIX, вы можете использовать инструмент gcc для первой компиляции исходного кода во время выполнения, через system звонка с PERL скрипта, а затем сделать еще один системный вызов, чтобы запустить сгенерированный исполняемый файл.

Кроме того, в дополнение к ответу Бородина, даже если ваш файл с расширением hpp имеет исполняемый код, он может быть скомпилирован, но не будет выполнен. Обходным решением было бы сделать временную копию источника и предоставить ему расширение cpp и скомпилировать его, чтобы получить исполняемый файл, который вы можете вызвать из своего скрипта perl. Однако для этого требуется, чтобы ваш файл hpp действительно имел исполняемый код, если вы хотите получить какой-либо вывод. Вот пример:

# make a temp copy with cpp extension 
system("cp primercheck.hpp primercheck.cpp"); 

# generate executable using gcc 
system("gcc -o primercheck primercheck.cpp"); 

# set execute permissions on resulting file 
system("chmod +x primercheck"); 

# call the executable 
system("./primercheck"); 

# remove the temp cpp file 
system("rm primercheck.cpp"); 

# optional - remove the executable file as well 
system("rm primercheck"); 

Надеюсь, что это поможет.

Смежные вопросы