[Qt-interest] Problem perl into Qt Programme
yogesh upreti
yogesh.upreti at gmail.com
Thu Apr 28 22:10:41 CEST 2011
Hello All,
I am trying to run some perl command in my Qt programme.
I made a test programme according to
http://perldoc.perl.org/perlembed.html#Adding-a-Perl-interpreter-to-your-C-program
in my .pro file I have
#-------------------------------------------------
#
# Project created by QtCreator 2011-04-27T23:08:23
#
#-------------------------------------------------
QT += core gui
TARGET = testProcess
TEMPLATE = app
SOURCES += main.cpp\
testprocess.cpp
HEADERS += testprocess.h
FORMS += testprocess.ui
INCLUDEPATH += C:/Perl/lib/CORE
LIBS += -LC:/Perl/lib/CORE
Where C:\Perl is where I have my perl installed.
my .cpp file looks like:
#include "testprocess.h"
#include "ui_testprocess.h"
#include <perl.h>
#include <EXTERN.h>
testProcess::testProcess(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::testProcess)
{
ui->setupUi(this);
char *lines[2] = {"printf \"My Name is\\n\";", "printf \"Yogesh Upreti\""};
static PerlInterpreter *my_perl;
my_perl = perl_alloc();
perl_construct(my_perl);
ui->output->insertPlainText("Start perl\n");
int i = 0;
i = perl_parse(my_perl,NULL,2,lines,(char**)NULL);
perl_destruct(my_perl);
perl_free(my_perl);
PERL_SYS_TERM();
ui->output->insertPlainText(QString("Perl output : %1\n").arg(i));
}
testProcess::~testProcess()
{
delete ui;
}
When i start writing this code, my QtCreator is identifying perl.h and
EXTERN.h. Also it gives me hint for all the functions (perl_alloc(),
per_parse() etc etc)
But when I run the program, I got following message.
Running build steps for project testProcess...
Configuration unchanged, skipping qmake step.
Starting: "C:/QtSDK/mingw/bin/mingw32-make.exe" -w
mingw32-make: Entering directory
`D:/Work/Programming/QT/testProcess-build-desktop'
C:/QtSDK/mingw/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory
`D:/Work/Programming/QT/testProcess-build-desktop'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE
-DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX
-DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2
-DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN
-I'c:/QtSDK/Desktop/Qt/4.7.2/mingw/include/QtCore'
-I'c:/QtSDK/Desktop/Qt/4.7.2/mingw/include/QtGui'
-I'c:/QtSDK/Desktop/Qt/4.7.2/mingw/include' -I'c:/Perl/lib/CORE'
-I'c:/QtSDK/Desktop/Qt/4.7.2/mingw/include/ActiveQt' -I'debug' -I'.'
-I'../testProcess' -I'.'
-I'c:/QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/win32-g++' -o debug/testprocess.o
../testProcess/testprocess.cpp
In file included from c:/Perl/lib/CORE/perl.h:38,
from ../testProcess/testprocess.cpp:3:
c:/Perl/lib/CORE/config.h:39:20: warning: "/*" within comment
.....
../testProcess/testprocess.cpp: In constructor
'testProcess::testProcess(QWidget*)':
../testProcess/testprocess.cpp:11: warning: deprecated conversion from
string constant to 'char*'
../testProcess/testprocess.cpp:11: warning: deprecated conversion from
string constant to 'char*'
g++ -enable-stdcall-fixup -Wl,-enable-auto-import
-Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o
debug/testProcess.exe debug/main.o debug/testprocess.o
debug/moc_testprocess.o -L'c:/QtSDK/Desktop/Qt/4.7.2/mingw/lib' -lmingw32
-lqtmaind -LC:/Perl/lib/CORE -lQtGuid4 -lQtCored4
-LC:\OpenSSL-Win32_full\lib
debug/testprocess.o: In function `testProcess':
D:\Work\Programming\QT\testProcess-build-desktop/../testProcess/testprocess.cpp:13:
undefined reference to `perl_alloc'
D:\Work\Programming\QT\testProcess-build-desktop/../testProcess/testprocess.cpp:14:
undefined reference to `perl_construct'
D:\Work\Programming\QT\testProcess-build-desktop/../testProcess/testprocess.cpp:17:
undefined reference to `perl_parse'
D:\Work\Programming\QT\testProcess-build-desktop/../testProcess/testprocess.cpp:18:
undefined reference to `perl_destruct'
D:\Work\Programming\QT\testProcess-build-desktop/../testProcess/testprocess.cpp:19:
undefined reference to `perl_free'
D:\Work\Programming\QT\testProcess-build-desktop/../testProcess/testprocess.cpp:20:
undefined reference to `Perl_sys_term'
D:\Work\Programming\QT\testProcess-build-desktop/../testProcess/testprocess.cpp:13:
undefined reference to `perl_alloc'
D:\Work\Programming\QT\testProcess-build-desktop/../testProcess/testprocess.cpp:14:
undefined reference to `perl_construct'
D:\Work\Programming\QT\testProcess-build-desktop/../testProcess/testprocess.cpp:17:
undefined reference to `perl_parse'
D:\Work\Programming\QT\testProcess-build-desktop/../testProcess/testprocess.cpp:18:
undefined reference to `perl_destruct'
D:\Work\Programming\QT\testProcess-build-desktop/../testProcess/testprocess.cpp:19:
undefined reference to `perl_free'
D:\Work\Programming\QT\testProcess-build-desktop/../testProcess/testprocess.cpp:20:
undefined reference to `Perl_sys_term'
collect2: ld returned 1 exit status
mingw32-make[1]: Leaving directory
`D:/Work/Programming/QT/testProcess-build-desktop'
mingw32-make: Leaving directory
`D:/Work/Programming/QT/testProcess-build-desktop'
mingw32-make[1]: *** [debug/testProcess.exe] Error 1
mingw32-make: *** [debug] Error 2
The process "C:/QtSDK/mingw/bin/mingw32-make.exe" exited with code %2.
Error while building project testProcess (target: Desktop)
When executing build step 'Make'
Do anyone see something I am missing?? any keyword to be included??
Or anyother way to run perl programme step by step from my Qt program?
PS: I don't wanna use System command, I want to somehow collect the code
from user and run it and use its output for further processing.
Thanks in advance.
Yogesh Upreti
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20110428/dc518b08/attachment.html
More information about the Qt-interest-old
mailing list