我正在尝试使用Eclipse在C++项目中运行Python命令。

我已经在“包含”路径和Cross G++ Linker的“库”搜索路径中包括了“/usr/include/python3.5”。在Cross G++ Linker的其他版本中,我添加了-lpython3.5。

使用这些配置,我的构建看起来像: g++ -L / usr / include / python3.5 / -lpython3.5 -o“CppPyTest” ./src/CppPyTest.o

但是,出现以下错误:

/ usr / bin / ld:找不到-lpython3.5
makefile:45:目标“CppPyTest”的配方失败

如果删除-lpython3.5,则会出现错误:

undefined 对`Py_Initialize'的引用

我的完整代码是:

#include "Python.h"
#include <iostream>

using namespace std;

int main(int argc, char *argv[]) {
    Py_Initialize();
    PyRun_SimpleString("from time import time,ctime\n"
                     "print 'Today is',ctime(time())\n");
    Py_Finalize();
    return 0;
}

最佳答案

这显示了如何编译和链接代码。
这样就可以从package-manager或anaconda包中获得适用于Auguster python的参数。
代码(与Python 3兼容):

#include "Python.h"
#include <iostream>

using namespace std;

int main(int argc, char *argv[]) {
    Py_Initialize();
    PyRun_SimpleString("from time import time,ctime\n"
                     "print('Today is', ctime(time()))\n");
    Py_Finalize();
    return 0;
}
call (对于Anaconda)
g++ -I/opt/anaconda3/include/python3.7m -L /opt/anaconda3/lib -lpython3.7m CppPyTest.cpp
或(来自软件包管理器的python)
g++ -I/usr/include/python3.6m/ -lpython3.6m CppPyTest.cpp
在文件夹中创建一个可执行文件a.out。
我们可以通过执行a.out
export LD_LIBRARY_PATH=/opt/anaconda3/lib:$LD_LIBRARY_PATH
./a.out
提供输出:
Today is Tue Jul  7 14:56:31 2020
为了帮助您正确调整路径,请使用anaconda文件夹的内容:
$ ls /opt/anaconda3/lib/libpython*
/opt/anaconda3/lib/libpython3.7m.a
/opt/anaconda3/lib/libpython3.7m.nolto.a
/opt/anaconda3/lib/libpython3.7m.so
/opt/anaconda3/lib/libpython3.7m.so.1.0
/opt/anaconda3/lib/libpython3.so


$ ls /opt/anaconda3/include/python3.7m/
Python-ast.h           errcode.h          object.h       pymem.h
Python.h               eval.h             objimpl.h      pyport.h
abstract.h             fileobject.h       odictobject.h  pystate.h
accu.h                 fileutils.h        opcode.h       pystrcmp.h
asdl.h                 floatobject.h      osdefs.h       pystrhex.h
ast.h                  frameobject.h      osmodule.h     pystrtod.h
bitset.h               funcobject.h       parsetok.h     pythonrun.h
bltinmodule.h          genobject.h        patchlevel.h   pythread.h
boolobject.h           graminit.h         pgen.h         pytime.h
bytearrayobject.h      grammar.h          pgenheaders.h  rangeobject.h
bytes_methods.h        greenlet           py_curses.h    setobject.h
bytesobject.h          import.h           pyarena.h      sip.h
cellobject.h           internal           pyatomic.h     sliceobject.h
ceval.h                intrcheck.h        pycapsule.h    structmember.h
classobject.h          iterobject.h       pyconfig.h     structseq.h
code.h                 listobject.h       pyctype.h      symtable.h
codecs.h               longintrepr.h      pydebug.h      sysmodule.h
compile.h              longobject.h       pydtrace.h     token.h
complexobject.h        marshal.h          pyerrors.h     traceback.h
context.h              memoryobject.h     pyexpat.h      tupleobject.h
datetime.h             metagrammar.h      pyfpe.h        typeslots.h
descrobject.h          methodobject.h     pyhash.h       ucnhash.h
dictobject.h           modsupport.h       pylifecycle.h  unicodeobject.h
dtoa.h                 moduleobject.h     pymacconfig.h  warnings.h
dynamic_annotations.h  namespaceobject.h  pymacro.h      weakrefobject.h
enumobject.h           node.h             pymath.h

关于python - 找不到-lpython3.5-> Eclipse CPP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47165041/

10-11 18:38