Как сделать pyd с distutils в 64-битной версии? - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь создать какую-нибудь программу, которая использует opencv в python.Я должен сделать некоторые работы в режиме реального времени.Так что я делаю пользовательский интерфейс и другие вещи на python, и делаю основную программу на C ++.Я пытаюсь использовать distutils, но это сводит меня с ума.

import os
from distutils.core import setup, Extension
import distutils.sysconfig

# Variable Set
OPENCV_ROOT_DIR = "D:\\opencv"

# Internal variables
OPENCV_INCLUDE_DIR = OPENCV_ROOT_DIR + "\\build\\include"
OPENCV_LIBRARY_DIR = OPENCV_ROOT_DIR + "\\build\\x64\\vc15\\lib"
OPENCV_DLL_DIR = OPENCV_ROOT_DIR + "\\build\\x64\\vc15\\bin"
OPENCV_LIBRARY = "opencv_world343"

customCore = Extension("myCore", 
                        sources=[
                            os.path.dirname(os.path.realpath(__file__)) + "\\src.cpp",
                        ],
                        include_dirs=[
                            OPENCV_INCLUDE_DIR,
                        ],
                        library_dirs=[
                            OPENCV_LIBRARY_DIR,
                        ],
                        libraries=[
                            OPENCV_LIBRARY
                        ])

setup(name="myCore",
    version="1.0",
    description="My Core program",
    ext_modules=[customCore],
    data_files=[(distutils.sysconfig.get_python_lib(), [OPENCV_DLL_DIR + "\\" + OPENCV_LIBRARY + ".dll"])]
)

С моим рабочим столом этот setup.py не создает никаких проблем.Тем не менее, мой ноутбук делает ошибку связывания, которая

opencv_world343.lib (opencv_world343.dll): фатальная ошибка LNK1112: тип компьютера модуля «x64» конфликтует с типом целевой машины «X86»

И мой ноутбук, и настольный компьютер используют Windows 10 64bit.Я не знаю, почему это делает ошибку.Разница только в версии opencv.Мой рабочий стол использует 3.4.2, а мой ноутбук - 3.4.3.Это различие делает проблему ..?

...