【python基础知识】调用C++接口(setup.py运行)出现的各种问题

1、setup.py文件编写

网上下载的C++程序的Python接口,不会使用,全靠摸索。根据最近出现的问题,写下其中的道道,避免下一次抓狂。

setup.py文件内容如下:

from distutils.core import setup
from Cython.Build import cythonize

setup(
	name = "pybgs",
	include_dirs = ['E:/.../opencv-3.4.1/opencv/build/include/opencv','E:/.../opencv-3.4.1/opencv/build/include/opencv2','D:/.../python3.5/Lib/site-packages/numpy/core/include'],
    ext_modules = cythonize('pybgs.pyx')
)

其中,include_dirs中要添加的是你需要引入的各种API的include文件夹路径。我这里引入的是绝对路径。

2、命令行下运行 python setup.py build 命令

这里运行时遇见两种问题。

(1)error: Unable to find vcvarsall.bat

此问题在我写的这篇博文中,https://blog.csdn.net/qq_42152399/article/details/80841774

(2) error C1083: 无法打开包括文件: “numpy/arrayobject.h”: No such file

这个问题就大了,也许不是同样的文件,但都是 error C1083: 无法打开包括文件: ”xxxx“:No such file

原因是:你在上面第一部分setup.py文件中的include_dirs部分指定的路径不对。

举个例子:


而我指定的setup.py文件中的路径是

再来看它出错的地方,找到matx.hpp文件及那的第51行,

程序会在的当前目录继续寻找文件,所以再往下找应该是core/cvdef.h。而不是。所以将matx.hpp文件的51行改为

再看运行结果:


是因为上一个文件改好了,引用的新文件中又出现了引用多余的文件夹,因此依然要找到出错位置,删掉opencv2.

---------------------------------------------------------------------------------------------------------------

是否有人会想,将改为

E:/.../opencv-3.4.1/opencv/build/include

我早已经试过了,会报出更多的其他错误。我想我还是乖乖的继续改下去吧... ...

若有朋友知道其他方法,或者我这里说的不对的地方,欢迎留言告知。

************************************************************************************************************

写完后突然想到,改API源文件不是办法,既然源文件中都是从opencv2开始的,我就将路径改成opencv2的上一层。然后改项目中引用的路径,这样改的少一些。结果,改了几个地方就神奇般的好了。


猜你喜欢

转载自blog.csdn.net/qq_42152399/article/details/80844687