I am compiling one test code with g ++ without any problems.
#include "Python.h" int main(int argc, char** argv) { Py_Initialize(); PyRun_SimpleString("import pylab"); PyRun_SimpleString("pylab.plot(range(5))"); PyRun_SimpleString("pylab.show()"); Py_Exit(0); }
g++ -o test test.cpp -I/usr/include/python2.7/ -lpython2.7 works fine and works.
But when I try to embed this code in another project, it fails. It really bothers me.
The makefile is as follows.
CXX=g++ CXXFLAGS=-DIB_USE_STD_STRING -Wall -Wno-switch -g ROOT_DIR=.. BASE_SRC_DIR=${ROOT_DIR}/PosixSocketClient INCLUDES=-I${ROOT_DIR}/Shared/ -I${BASE_SRC_DIR} -I/usr/include/python2.7 LIBRARY=-L/usr/lib/python2.7/config TARGET=eu $(TARGET): $(CXX) $(CXXFLAGS) $(INCLUDES) -o EClientSocketBase.o -c $(BASE_SRC_DIR)/EClientSocketBase.cpp $(CXX) $(CXXFLAGS) $(INCLUDES) -o EPosixClientSocket.o -c $(BASE_SRC_DIR)/EPosixClientSocket.cpp $(CXX) $(CXXFLAGS) $(INCLUDES) -o PosixTestClient.o -c PosixTestClient.cpp $(CXX) $(CXXFLAGS) $(INCLUDES) -o Main.o -c Main.cpp $(CXX) $(LIBRARY) -lpython2.7 -o $@ EClientSocketBase.o EPosixClientSocket.o PosixTestClient.o Main.o clean: rm -f $(TARGET) *.o
This project compiles and runs, the only change I made is to add the test code to the Main.cpp file. warning / error message:
In the file included in / usr / include / python 2.7 / Python.h: 8: 0, from Main.cpp: 15:
/usr/include/python2.7/pyconfig.h:1158:07: warning: "_POSIX_C_SOURCE" is overridden [enabled by default]
/usr/include/features.h:163:07: note: this is the location of the previous definition
/usr/include/python2.7/pyconfig.h:1180:07: warning: "_XOPEN_SOURCE" overridden [enabled by default]
/usr/include/features.h:165:07: note: this is the location of the previous definition
g ++ -L / usr / lib / -lpython2.7 -ldl -lutil -o eu EClientSocketBase.o EPosixClientSocket.o PosixTestClient.o Main.o
Main.o: In the main':
/home/bbc/TWS/IBJts/cpp/eu-ats/Main.cpp:81: undefined reference to function main':
/home/bbc/TWS/IBJts/cpp/eu-ats/Main.cpp:81: undefined reference to main':
/home/bbc/TWS/IBJts/cpp/eu-ats/Main.cpp:81: undefined reference to main':
/home/bbc/TWS/IBJts/cpp/eu-ats/Main.cpp:81: undefined reference to Py_Initialize '
/home/bbc/TWS/IBJts/cpp/eu-ats/Main.cpp:82: undefined link to PyRun_SimpleStringFlags'
/home/bbc/TWS/IBJts/cpp/eu-ats/Main.cpp:83: undefined reference to PyRun_SimpleStringFlags'
/home/bbc/TWS/IBJts/cpp/eu-ats/Main.cpp:83: undefined reference to PyRun_SimpleStringFlags'
/home/bbc/TWS/IBJts/cpp/eu-ats/Main.cpp:83: undefined reference to PyRun_SimpleStringFlags "
/home/bbc/TWS/IBJts/cpp/eu-ats/Main.cpp:84: undefined link to PyRun_SimpleStringFlags'
/home/bbc/TWS/IBJts/cpp/eu-ats/Main.cpp:85: undefined reference to PyRun_SimpleStringFlags'
/home/bbc/TWS/IBJts/cpp/eu-ats/Main.cpp:85: undefined reference to PyRun_SimpleStringFlags'
/home/bbc/TWS/IBJts/cpp/eu-ats/Main.cpp:85: undefined reference to Py_Exit '
collect2: ld returned 1 exit status
make: * [eu] Error 1
any help? thanks!
c ++ python makefile
bbc
source share