为什么Windows上的Cython扩展依赖于pythonXX.dll但不依赖于MacOSX?

时间:2015-11-11 23:41:59

标签: python windows macos dll cython

我在windows和mac上构建了相同的库(下面的示例来自rfoo),而mac版本只有系统依赖性

$ otool -L marsh.so 
marsh.so:
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)

在Windows上它取决于python的dll

>dumpbin /dependents marsh.pyd
Microsoft (R) COFF/PE Dumper Version 12.00.31101.0
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file marsh.pyd

File Type: DLL

  Image has the following dependencies:

    python25.dll
    MSVCR120.dll
    KERNEL32.dll

我想知道它是否是一个实际的选择,并不是真的是由于Windows,或者是否有特定于Windows的东西需要这个。

上下文:我使用它从Ableton Live内部的嵌入式解释器中加载python扩展,它使用旧的python版本;但最糟糕的是,python没有作为库加载,它在软件内部静态链接。在mac上,它不是问题,我仍然可以加载扩展。在Windows上,我不能,因为我必须链接到python25.dll,但是在加载时它会尝试再次初始化解释器,这会产生错误,因为Ableton Live不使用dll。我想知道是否有希望让它在Windows上运行。

1 个答案:

答案 0 :(得分:-1)

OS X上有DLL而不是Windows,大多数OS X应用程序是静态链接的,更大但外部依赖性更小。