簡體   English   中英

使用 Boost::Python、cmake 和 windows 進行編譯

[英]Compiling with Boost::Python, cmake and windows

我正在嘗試在 Windows 上使用 cmake 使用 Boost::python 編譯一個教程項目。

我安裝了 Boost 使用

.\b2 --with-python --toolset=msvc-14.1 architecture=x86 address-model=64 link=shared --user-config=user-config.jam

用戶配置包含

import toolset : using ;
using python 
: 3.6  # Version
: C:/ProgramData/Anaconda3/python.exe  # Interpreter
: C:/ProgramData/Anaconda3/include/include  # inc dir
: C:/ProgramData/Anaconda3/libs  # link libs
: <toolset>msvc
;

cmake 文件是

cmake_minimum_required(VERSION 3.13)

cmake_policy(SET CMP0074 NEW)

project(tutorial)
  # Find default python libraries and interpreter
  find_package(Boost REQUIRED)
  find_package(PythonInterp 3 REQUIRED)
  find_package(PythonLibs 3 REQUIRED)

  include_directories(${Boost_INCLUDE_DIR} ${PYTHON_INCLUDE_DIRS})
  SET(Boost_USE_STATIC_LIBS     OFF)
  SET(Boost_USE_MULTITHREADED    ON)
  SET(Boost_USE_STATIC_RUNTIME     OFF)
  find_package(Boost 1.67 REQUIRED COMPONENTS python36)

  message(STATUS "PYTHON_LIBRARIES = ${PYTHON_LIBRARIES}")
  message(STATUS "PYTHON_EXECUTABLE = ${PYTHON_EXECUTABLE}")
  message(STATUS "PYTHON_INCLUDE_DIRS = ${PYTHON_INCLUDE_DIRS}")
  message(STATUS "Boost_LIBRARIES = ${Boost_LIBRARIES}")

  # Build and link the pylib module
  add_library(pylib MODULE pylib.cpp)
  set_target_properties(pylib PROPERTIES SUFFIX .pyd)

  target_link_libraries(pylib ${Boost_LIBRARIES} ${PYTHON_LIBRARIES})

cmake 能夠找到 boost_python 庫

Boost_LIBRARIES = optimized;C:/Program Files/boost/boost_1_67_0/stage/lib/boost_python36-vc141-mt-x64-1_67.lib;debug;C:/Program Files/boost/boost_1_67_0/stage/lib/boost_python36-vc141-mt-gd-x64-1_67.lib

但是我在編譯過程中仍然收到以下錯誤:

LNK1104 cannot open file 'boost_pythonPY_MAJOR_VERSIONPY_MINOR_VERSION-vc141-mt-gd-x64-1_67.lib'

任何人都對正在發生的事情有任何見解? 為什么鏈接器仍然找不到庫文件。

我松散地遵循這個人的例子

感謝 VTT 的回答,我需要將PY_MAJOR_VERSIONPY_MINOR_VERSION設置為正確的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM