Компиляция файла .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'

Я нашел это, которое идеально подходит для моего вопроса, но я не могу понять, какие LIBPATH я должен включить. Может ли кто-нибудь помочь мне с этим?

изменить: Итак, я использую 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
Не [я] включайте импортные библиотеки. Этот каталог добавляется с помощью /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
Цитонизированный файл 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 я просто преобразовал пример TestFilePython.pyx в Cython и на его месте создал TestFilePython.cp35-win_amd64.pyd. Это работало нормально.   -  person Eryk Sun    schedule 16.01.2016
comment
'мсв'? Запустите 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