การรวบรวมไฟล์ .cpp จากบรรทัด cmd บน windows ข้อผิดพลาดไม่สามารถเปิดไฟล์ 'python.lib

ฉันมีไฟล์ .c ที่มี Python.h อยู่ และฉันต้องการคอมไพล์มัน

นี่คือสิ่งที่ฉันกำลังเข้าสู่บรรทัด cmd ในขณะนี้ cl -IC:\[...]\Python35\include -IC:\[...]\Python35\libs TestFilePython.c

ซึ่งส่งผลให้เกิดข้อผิดพลาด: LINK : fatal error LNK1104: cannot open file 'python35.lib'

ฉันพบสิ่งนี้ ซึ่งดูเหมือนว่าจะเหมาะสมที่สุดสำหรับคำถามของฉัน แต่ฉัน ไม่สามารถระบุได้ว่า LIBPATHs ใดที่ฉันควรรวมไว้ ใครสามารถช่วยฉันในเรื่องนั้นได้บ้าง?

แก้ไข: โอเค จริงๆ แล้วฉันใช้ cpp ดังนั้น setup.py จึงมีลักษณะดังนี้:

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

setup(ext_modules = cythonize(
           "TestFilePython.pyx",                 # our Cython source
           language="c++",             # generate C++ code
      ))

การรัน python setup.py build_ext --inplace ส่งผลให้มีการสร้าง .cpp (.c ก่อนตัวเลือกภาษา)

ตอนนี้ฉันกำลังพยายามคอมไพล์ .cpp นั้น ขณะค้นหา ฉันเพิ่งเจอแนวคิดที่ฉันต้องรวมตัวเลือกแบบฝังไว้ (ซึ่งอาจช่วยแก้ปัญหาจุดเข้าใช้งานไม่ได้) แต่ยังคงพยายามดูว่าฉันสามารถทำอะไรได้บ้าง

TestFilePython.pyx เป็นเพียง: print("Hello World") หากถูกถาม ฉันยังสามารถพิมพ์เนื้อหาของ cpp ที่สร้างขึ้นได้


person Nimitz14    schedule 16.01.2016    source แหล่งที่มา
comment
อย่า [I] รวมการนำเข้า libs ไดเร็กทอรีนั้นถูกเพิ่มโดยใช้ /link /LIBPATH:C:\[...]\Python35\libs นอกจากนี้ ตัวเลือกตัวเชื่อมโยงจะต้องแสดงอยู่หลังไฟล์ต้นฉบับ   -  person Eryk Sun    schedule 16.01.2016
comment
cl -IC:\Users\[...]\Python35\include TestFilePython.cpp /link /LIBPATH:C:\Users\[...]\Python35\libs ทำให้ฉันเกิดข้อผิดพลาด entry point must be defined   -  person Nimitz14    schedule 16.01.2016
comment
หากคุณกำลังสร้างไฟล์ปฏิบัติการ คุณต้องมีฟังก์ชัน main หรือ wmain หากคุณกำลังสร้าง DLL/PYD ให้ใช้ cl /LD ...   -  person Eryk Sun    schedule 16.01.2016
comment
ฉันกำลังพยายามให้ cython ทำงาน ฉันไม่ควรต้องการฟังก์ชั่นหลัก...   -  person Nimitz14    schedule 16.01.2016
comment
@ Nimitz14 คุณช่วยแสดงรหัสของคุณให้เราดูได้ไหม?   -  person fuz    schedule 16.01.2016
comment
ไฟล์ Cythonized TestFilePython.cpp ควรได้รับการคอมไพล์และเชื่อมโยงเป็น TestFilePython.pyd แล้ว   -  person Eryk Sun    schedule 16.01.2016
comment
ใช่แล้ว นั่นไม่ได้ผล และเชื่อฉันเถอะว่าฉันได้ถามผู้คนมากมายไปแล้ว และไม่อยากลงไปที่หลุมกระต่ายนั้น ควรเป็นไปได้ที่จะคอมไพล์ไฟล์ .cpp ด้วยตนเองได้ เพิ่งเห็นความคิดเห็น dll ของคุณ เดาว่าฉันจะลองใช้มุมนั้น   -  person Nimitz14    schedule 16.01.2016
comment
ลงไปที่โพรงกระต่ายนั้นสักหน่อย คุณรัน Python ในไดเร็กทอรีที่มีโมดูลส่วนขยาย TestFilePython.pyd และรัน import TestFilePython หรือไม่   -  person Eryk Sun    schedule 16.01.2016
comment
เหตุใดจึงติดแท็กเป็น C เมื่อคุณพยายามรวบรวมโค้ด C ++   -  person fuz    schedule 16.01.2016
comment
@eryksun เมื่อรัน setup.py มันจะไม่ทำขั้นตอนสุดท้ายเพราะด้วยเหตุผลบางอย่างที่ msvs ไม่ได้คอมไพล์ หมายความว่า .pyd จะไม่ถูกสร้างขึ้นเลย don't know how to compile c/c++ code on platform 'nt' with 'msvs' compiler มันให้ไฟล์ .cpp แก่ฉันซึ่งเป็นสิ่งที่ฉันสามารถใช้งานได้ ฉันใช้ VS2015 มีคนบอกฉันว่าควรจะใช้งานได้ และฉันวางแผนที่จะติดตั้งใหม่ในบางจุด แต่ก่อนที่ฉันจะทำเช่นนั้น ฉันคิดว่าฉันจะลองหาทางแก้ไขก่อน   -  person Nimitz14    schedule 16.01.2016
comment
คุณติดตั้ง Visual Studio เวอร์ชันใด การสร้างส่วนขยายสำหรับ Python 3.5 ต้องใช้ Visual Studio 2015 บน Windows 10 ฉันเพิ่ง Cythonized ตัวอย่าง TestFilePython.pyx และสร้าง TestFilePython.cp35-win_amd64.pyd ขึ้นมาแทนที่ มันทำงานได้ดี   -  person Eryk Sun    schedule 16.01.2016
comment
'msvs'? เริ่ม Python และตรวจสอบ import distutils.ccompiler; distutils.ccompiler.get_default_compiler() มันควรจะเป็น 'msvc'   -  person Eryk Sun    schedule 16.01.2016
comment
นั่นคือสิ่งที่มันเป็น ;)   -  person Nimitz14    schedule 16.01.2016
comment
'msvs' หรือ 'msvc'? หากมีข้อความว่า 'msvs' ให้ลบ 3.5 ออกแล้วดาวน์โหลดใหม่/ติดตั้ง 3.5.1 ใหม่   -  person Eryk Sun    schedule 16.01.2016
comment
ให้ตายเถอะ ฉันมีความหวัง แต่มันบอกว่า msvc :( ฉันเพิ่งตรวจสอบพยายามที่จะรับ .pyd จาก .pyx มันบอกว่า 'msvs' (มีบางอย่างแปลก ๆ เกิดขึ้น...)   -  person Nimitz14    schedule 16.01.2016
comment
โอ้พระเจ้า. มันได้ผล เพียงแค่ต้องเพิ่ม --compiler=msvc ต่อท้าย ฉันใช้ msvs มาตลอด   -  person Nimitz14    schedule 16.01.2016
comment
ขอขอบคุณสำหรับความอดทนของคุณ!   -  person Nimitz14    schedule 16.01.2016