问题描述
利用Qt编写一个GUI程序,需要调用Python实现的神经网络。main.cpp文件中的Python解释器初始化代码如下:
本人在VSCode平台上用CMake构建整个程序的Makefile依赖,
CMakeList.txt中寻找Python头文件和库的命令如下:
但是在链接阶段报错如下:
该部分符号未定义错误对应于main.cpp中的红色波浪线部分。
解决方案
网上有很多说在其它方面都配置正确的情况下,C/C++调用Python C接口显示符号未定义问题的原因是编译器(此处为mingw g++)和Python的位数(32bit/64bit)不同。但本人的g++和Python均为64bit,所以不是该原因。
后来在本人碰巧在CMakeList.txt上输入了
find_package(PythonLibs REQUIRED)
后。链接成功。该行CMake命令的目的是使用CMake自带的Python软件包查找模板(Modules)进行查找,并设置相应的变量。这说明。链接错误的原因是Python软件库的查找语句(find_library)。目前还不清楚为什么换用CMake自带的Modules就可以。