提问人:theNinthElement 提问时间:2/27/2022 最后编辑:theNinthElement 更新时间:3/2/2022 访问量:333
包含 Python.h,但未建立 Py_initialze() 链接
Python.h included but Py_initialze() link not established
问:
我面临着Py_initialize的链接错误,尽管我在我的 CMake 中引用了我的 Python 库。找到 Python.h,但未建立链接。
inpainting.cpp:(.text+0x47843): undefined reference to `Py_Initialize'
/usr/bin/ld: inpainting.cpp:(.text+0x47854): undefined reference to
`PyRun_SimpleStringFlags'
/usr/bin/ld: inpainting.cpp:(.text+0x47940): undefined reference to `Py_Finalize'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/imgCodecs.dir/build.make:552: imgCodecs] Error 1
make[1]: *** [CMakeFiles/Makefile2:84: CMakeFiles/imgCodecs.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
这是我的 CMakeList。https://pastebin.com/QkihgBGm
编辑:添加我尝试编译的方式。我在我的 makefile 上做 Cmake 和 make。
这是我尝试编译的 C++ 代码。
// *********** Begin: Run Python script ************************************************************
// Initialize the Python Interpreter
Py_Initialize();
PyRun_SimpleString("import sys");
char buff[FILENAME_MAX]; //create string buffer to hold path
getcwd( buff, FILENAME_MAX);
string current_working_dir(buff);
string shore_working_dir = current_working_dir +
"/shore_imputation/";
const char * shore_working_dir_c = shore_working_dir.c_str();
qDebug() << shore_working_dir_c;
// Finish the Python Interpreter
Py_Finalize();
// *********** End: Run Python script
**************************************************************
答:
0赞
theNinthElement
3/2/2022
#1
经过数小时的调查,Cmake 似乎区分大小写,需要显式调用才能链接到库。
target_link_libraries(SOURCE ${OpenCV_LIBS})
target_link_libraries(SOURCE ${PYTHON_LIBRARIES})
这使它起作用和宾果游戏......干杯!
评论
#include
PyInitialize()
PYTHON
target_link_libraries()