mirror of https://github.com/python/cpython
Issue 1793: Add ctypes.util.find_msvcrt() function (on Windows).
This commit is contained in:
parent
3c4971c40e
commit
95ba13fa85
|
@ -5,7 +5,50 @@ import sys, os
|
||||||
|
|
||||||
# find_library(name) returns the pathname of a library, or None.
|
# find_library(name) returns the pathname of a library, or None.
|
||||||
if os.name == "nt":
|
if os.name == "nt":
|
||||||
|
|
||||||
|
def _get_build_version():
|
||||||
|
"""Return the version of MSVC that was used to build Python.
|
||||||
|
|
||||||
|
For Python 2.3 and up, the version number is included in
|
||||||
|
sys.version. For earlier versions, assume the compiler is MSVC 6.
|
||||||
|
"""
|
||||||
|
# This function was copied from Lib/distutils/msvccompiler.py
|
||||||
|
prefix = "MSC v."
|
||||||
|
i = sys.version.find(prefix)
|
||||||
|
if i == -1:
|
||||||
|
return 6
|
||||||
|
i = i + len(prefix)
|
||||||
|
s, rest = sys.version[i:].split(" ", 1)
|
||||||
|
majorVersion = int(s[:-2]) - 6
|
||||||
|
minorVersion = int(s[2:3]) / 10.0
|
||||||
|
# I don't think paths are affected by minor version in version 6
|
||||||
|
if majorVersion == 6:
|
||||||
|
minorVersion = 0
|
||||||
|
if majorVersion >= 6:
|
||||||
|
return majorVersion + minorVersion
|
||||||
|
# else we don't know what version of the compiler this is
|
||||||
|
return None
|
||||||
|
|
||||||
|
def find_msvcrt():
|
||||||
|
"""Return the name of the VC runtime dll"""
|
||||||
|
version = _get_build_version()
|
||||||
|
if version is None:
|
||||||
|
# better be safe than sorry
|
||||||
|
return None
|
||||||
|
if version <= 6:
|
||||||
|
clibname = 'msvcrt'
|
||||||
|
else:
|
||||||
|
clibname = 'msvcr%d' % (version * 10)
|
||||||
|
|
||||||
|
# If python was built with in debug mode
|
||||||
|
import imp
|
||||||
|
if imp.get_suffixes()[0][0] == '_d.pyd':
|
||||||
|
clibname += 'd'
|
||||||
|
return clibname+'.dll'
|
||||||
|
|
||||||
def find_library(name):
|
def find_library(name):
|
||||||
|
if name in ('c', 'm'):
|
||||||
|
return find_msvcrt()
|
||||||
# See MSDN for the REAL search order.
|
# See MSDN for the REAL search order.
|
||||||
for directory in os.environ['PATH'].split(os.pathsep):
|
for directory in os.environ['PATH'].split(os.pathsep):
|
||||||
fname = os.path.join(directory, name)
|
fname = os.path.join(directory, name)
|
||||||
|
|
|
@ -41,6 +41,11 @@ Extension Modules
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue 1793: Function ctypes.util.find_msvcrt() added that returns
|
||||||
|
the name of the C runtime library that Python uses.
|
||||||
|
ctypes.util.find_library(name) now call this function when name is
|
||||||
|
'm' or 'c'.
|
||||||
|
|
||||||
- The Tkinter module has been made a package and renamed 'tkinter'. All
|
- The Tkinter module has been made a package and renamed 'tkinter'. All
|
||||||
Tkinter-related modules (like Tix, ScrolledText, turtle etc.) are now
|
Tkinter-related modules (like Tix, ScrolledText, turtle etc.) are now
|
||||||
submodules of that package and have been renamed to conform to PEP 8
|
submodules of that package and have been renamed to conform to PEP 8
|
||||||
|
|
Loading…
Reference in New Issue