我一定犯了某种明显的错误,但经过几个小时的战斗,我无法取得进一步的进展:
升级到 Boost 1.54、CMake 2.8.12 和 Python 2.7.5(所有三个均来自slightly早期的次要版本),我的 Python 绑定project不再在调试配置中链接(它们在发布中链接良好)。我正在使用 VS 2012 进行构建。更新前一切正常.
我按照标准方式构建了 Boost:bootstrap.bat
其次是b2 address-model=64 toolset=msvc-11.0
。我的系统安装了 Python 2.7,由 b2 选取:
notice: [python-cfg] Configuring python...
notice: [python-cfg] Registry indicates Python 2.7 installed at "C:\Python27\"
notice: [python-cfg] Checking interpreter command "python"...
notice: [python-cfg] running command 'DIR /-C /A:S "C:\Python27\python.exe" 2>&1'
notice: [python-cfg] running command 'python -c "from sys import *; print('version=%d.%d\nplatform=%s\nprefix=%s\nexec_prefix=%s\nexecutable=%s' % (version_info[0],version_info[1],platform,prefix,exec_prefix,executable))" 2>&1'
notice: [python-cfg] ...requested configuration matched!
notice: [python-cfg] Details of this Python configuration:
notice: [python-cfg] interpreter command: "python"
notice: [python-cfg] include path: "C:\Python27\Include"
notice: [python-cfg] library path: "C:\Python27\libs"
notice: [python-cfg] DLL search path: "C:\Python27"
我的机器上没有安装任何其他 Python。
当我在项目上运行 CMake 时,一切看起来都很好:
Found PythonLibs: optimized;C:/Python27/libs/python27.lib;debug;C:/Python27/libs/python27_d.lib (found version "2.7.5")
调试中链接器命令行的相关部分符合预期:
"C:\franz\dev\boost_1_54_0\stage\lib\libboost_python-vc110-mt-gd-1_54.lib" "C:\Python27\libs\python27_d.lib"
当我最终在调试中构建项目时:
LINK : fatal error LNK1104: cannot open file 'python27.lib'
既然无处可去python27.lib
在链接器的命令行中提到,我编辑了libboost_python-vc110-mt-gd-1_54.lib
使用十六进制编辑器只是发现它包含对python27.lib
(形式为/DEFAULTLIB:"python27.lib"
)我希望参考的地方python27_d.lib
相反(没有)。
我在构建 Boost 时做错了什么吗?这是 Boost 1.54 中 Boost.Python 的已知问题吗?任何帮助将不胜感激。
更新#1:我再次尝试使用 Boost 1.51 和 1.50,出现同样的问题,所以这不是 Boost 中的回归。
更新#2:我从 Python 安装中删除了 Python 库 (python27_d.lib) 的调试版本,从而恢复为普通 Python 安装。然后我重建了 Boost 1.51 和我的项目(CMake 按预期报告了单个库文件:Found PythonLibs: C:/Python27/libs/python27.lib (found version "2.7.5")
)。问题仍然存在,但是错误消息现在提到了 python27_d.lib:LINK : fatal error LNK1104: cannot open file 'python27_d.lib'
!
更新#3: Using 过程监控器我可能没有在其中搜索 python27_d.libC:\Python27\libs\
它实际所在的位置:
3:35:28.0550683 PM link.exe 10132 CreateFile C:\franz\dev\appleseed\build\appleseed.python\python27_d.lib NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a
3:35:28.0551846 PM link.exe 10132 CreateFile C:\franz\dev\boost_1_50_0\stage\lib\python27_d.lib NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a
3:35:28.0552474 PM link.exe 10132 CreateFile C:\franz\dev\boost_1_50_0\stage\lib\Debug\python27_d.lib PATH NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a
3:35:28.0553595 PM link.exe 10132 CreateFile C:\franz\dev\appleseed\build\appleseed.python\python27_d.lib NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a
3:35:28.0556105 PM link.exe 10132 CreateFile C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\amd64\python27_d.lib NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a
3:35:28.0559637 PM link.exe 10132 CreateFile C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\lib\amd64\python27_d.lib NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a
3:35:28.0560984 PM link.exe 10132 CreateFile C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64\python27_d.lib NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a
3:35:28.0561741 PM link.exe 10132 CreateFile C:\franz\dev\appleseed\build\appleseed.python\python27_d.lib NAME NOT FOUND Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: n/a, ShareMode: Read, AllocationSize: n/a
更新#4: 相关问题:Visual C++ 调试库命名约定