【问题标题】:how to compile with Visual Studio 2008 when Visual Studio 2010 is installed?安装 Visual Studio 2010 后如何使用 Visual Studio 2008 编译?
【发布时间】:2013-01-09 03:55:22
【问题描述】:

我正在尝试为 Python 的 TA-Lib 构建 mrjbq7 的包装器。经过几次尝试,我很确定包装器不会构建,因为我有 Visual Studio 2010,但我的 Python 正在从 Visual Studio 2008 中寻找编译器。是否可以只获取编译器?我有一种感觉,我可能需要并排安装 Visual Studio 2008(看到另一个线程说这没有问题),但如果可能的话,我宁愿避免它。有可能吗?
更多信息:
已安装 Visual Studio 2010 Express
视窗 7
Python 2.7.3
pythonxy27也安装了
怀疑是编译器版本的原因:
a - 我得到的最后一个错误是对未知 _ftol2_sse_ 的引用,其他线程说这是由于使用了错误的编译器
b - MSC v. 的 sys.version 为 1500,适用于 MSVC 9.0(在解释器中使用 distutils\cygwincompiler.py 中的几行代码来找到它)

我希望这是所有必需的信息,如果需要,我会添加更多信息。

【问题讨论】:

    标签: python visual-studio-2008


    【解决方案1】:

    您根本不需要安装 Visual Studio 来编译 Python 扩展。安装适当的 Windows SDK(对于 Python 2.7,将是 here)。然后,使用 Windows SDK 命令提示符,说服 distutils 使用 MSVC 2008:

    set MSSdk=1
    set DISTUTILS_USE_SDK=1 
    setenv /Release
    

    然后您应该可以通过 setup.py 进行安装

    【讨论】:

    • 谢谢 - 它有点远,现在我得到错误:“build\lib.win32-2.7\talib.pyd : fatal error LNK1120: 391 unresolved externals error: command 'link.exe'失败,退出状态为 1120”。我将开始重新搜索如何解决该问题。
    【解决方案2】:

    感谢 Luis 的帮助,从那里我找到了 link.exe 1120 错误的解决方案:
    1 - 从上面的 Luis 帖子中获取 Windows SDK
    2 - 转到 Visual Studio 9 bin 的文件夹(我的是:C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin) 3 - 打开 Visual Studio 2008 命令提示符
    4 - 将目录更改为 mrjdb7 的文件夹
    5 - 在命令提示符下,输入 'python setup.py install'

    此时,你应该得到一个错误:“找不到 vcvarsall.bat”

    6 - 复制并粘贴 vcvar32.bat
    7 - 将其重命名为 vcvarsall.bat

    此时,它仍然无法正常工作。这是 distutils python 文件中的问题

    8 - 导航到 distutils 文件夹(我的:C:\Python27\Lib\distutils)
    9 - 打开 msvc9compiler.py
    10 - 查找函数“def find_vcvarsall(version):”(我的:第 219 行)
    11 - 在函数结束时,查找此行:'vcvarsall = os.path.join(productdir, "vcvarsall.bat")'(我的:第 257 行)
    12 - 替换为:vcvarsall = os.path.join(productdir, r"bin\vcvarsall.bat")

    我发现的问题是,msvc9compiler.py 是从 vcvarsall.bat 文件所在的位置向上查找一个文件夹,它应该在 \bin 文件夹中查找。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-28
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多