GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — python-docs-ru/extending/windows.po at 3.15 · python/python-docs-ru Expand file tree/ Copy pathwindows.poMore file actions 213 lines (185 loc) · 8.44 KB / Copy pathwindows.poFile metadata and controls213 lines (185 loc) · 8.44 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 # SOME DESCRIPTIVE TITLE. # Copyright (C) 2001 Python Software Foundation # This file is distributed under the same license as the Python package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # # Translators: # python-doc bot, 2025 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.15\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-11-01 18:39+0000\n" "PO-Revision-Date: 2025-09-16 00:00+0000\n" "Last-Translator: python-doc bot, 2025\n" "Language-Team: Russian (https://app.transifex.com/python-doc/teams/5390/" "ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ru\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || " "(n%100>=11 && n%100<=14)? 2 : 3);\n" msgid "Building C and C++ Extensions on Windows" msgstr "" msgid "" "This chapter briefly explains how to create a Windows extension module for " "Python using Microsoft Visual C++, and follows with more detailed background " "information on how it works. The explanatory material is useful for both " "the Windows programmer learning to build Python extensions and the Unix " "programmer interested in producing software which can be successfully built " "on both Unix and Windows." msgstr "" msgid "" "Module authors are encouraged to use the distutils approach for building " "extension modules, instead of the one described in this section. You will " "still need the C compiler that was used to build Python; typically Microsoft " "Visual C++." msgstr "" msgid "" "This chapter mentions a number of filenames that include an encoded Python " "version number. These filenames are represented with the version number " "shown as ``XY``; in practice, ``'X'`` will be the major version number and " "``'Y'`` will be the minor version number of the Python release you're " "working with. For example, if you are using Python 2.2.1, ``XY`` will " "actually be ``22``." msgstr "" msgid "A Cookbook Approach" msgstr "" msgid "" "There are two approaches to building extension modules on Windows, just as " "there are on Unix: use the ``setuptools`` package to control the build " "process, or do things manually. The setuptools approach works well for most " "extensions; documentation on using ``setuptools`` to build and package " "extension modules is available in :ref:`setuptools-index`. If you find you " "really need to do things manually, it may be instructive to study the " "project file for the :source:`winsound <PCbuild/winsound.vcxproj>` standard " "library module." msgstr "" msgid "Differences Between Unix and Windows" msgstr "" msgid "" "Unix and Windows use completely different paradigms for run-time loading of " "code. Before you try to build a module that can be dynamically loaded, be " "aware of how your system works." msgstr "" msgid "" "In Unix, a shared object (:file:`.so`) file contains code to be used by the " "program, and also the names of functions and data that it expects to find in " "the program. When the file is joined to the program, all references to " "those functions and data in the file's code are changed to point to the " "actual locations in the program where the functions and data are placed in " "memory. This is basically a link operation." msgstr "" msgid "" "In Windows, a dynamic-link library (:file:`.dll`) file has no dangling " "references. Instead, an access to functions or data goes through a lookup " "table. So the DLL code does not have to be fixed up at runtime to refer to " "the program's memory; instead, the code already uses the DLL's lookup table, " "and the lookup table is modified at runtime to point to the functions and " "data." msgstr "" msgid "" "In Unix, there is only one type of library file (:file:`.a`) which contains " "code from several object files (:file:`.o`). During the link step to create " "a shared object file (:file:`.so`), the linker may find that it doesn't know " "where an identifier is defined. The linker will look for it in the object " "files in the libraries; if it finds it, it will include all the code from " "that object file." msgstr "" msgid "" "In Windows, there are two types of library, a static library and an import " "library (both called :file:`.lib`). A static library is like a " "Unix :file:`.a` file; it contains code to be included as necessary. An " "import library is basically used only to reassure the linker that a certain " "identifier is legal, and will be present in the program when the DLL is " "loaded. So the linker uses the information from the import library to build " "the lookup table for using identifiers that are not included in the DLL. " "When an application or a DLL is linked, an import library may be generated, " "which will need to be used for all future DLLs that depend on the symbols in " "the application or DLL." msgstr "" msgid "" "Suppose you are building two dynamic-load modules, B and C, which should " "share another block of code A. On Unix, you would *not* pass :file:`A.a` to " "the linker for :file:`B.so` and :file:`C.so`; that would cause it to be " "included twice, so that B and C would each have their own copy. In Windows, " "building :file:`A.dll` will also build :file:`A.lib`. You *do* " "pass :file:`A.lib` to the linker for B and C. :file:`A.lib` does not " "contain code; it just contains information which will be used at runtime to " "access A's code." msgstr "" msgid "" "In Windows, using an import library is sort of like using ``import spam``; " "it gives you access to spam's names, but does not create a separate copy. " "On Unix, linking with a library is more like ``from spam import *``; it does " "create a separate copy." msgstr "" msgid "" "Turn off the implicit, ``#pragma``-based linkage with the Python library, " "performed inside CPython header files." msgstr "" msgid "Using DLLs in Practice" msgstr "" msgid "" "Windows Python is built in Microsoft Visual C++; using other compilers may " "or may not work. The rest of this section is MSVC++ specific." msgstr "" msgid "" "When creating DLLs in Windows, you can use the CPython library in two ways:" msgstr "" msgid "" "By default, inclusion of :file:`PC/pyconfig.h` directly or " "via :file:`Python.h` triggers an implicit, configure-aware link with the " "library. The header file chooses :file:`pythonXY_d.lib` for " "Debug, :file:`pythonXY.lib` for Release, and :file:`pythonX.lib` for Release " "with the :ref:`Limited API <stable-application-binary-interface>` enabled." msgstr "" msgid "" "To build two DLLs, spam and ni (which uses C functions found in spam), you " "could use these commands::" msgstr "" msgid "" "cl /LD /I/python/include spam.c\n" "cl /LD /I/python/include ni.c spam.lib" msgstr "" msgid "" "The first command created three files: :file:`spam.obj`, :file:`spam.dll` " "and :file:`spam.lib`. :file:`Spam.dll` does not contain any Python " "functions (such as :c:func:`PyArg_ParseTuple`), but it does know how to find " "the Python code thanks to the implicitly linked :file:`pythonXY.lib`." msgstr "" msgid "" "The second command created :file:`ni.dll` (and :file:`.obj` " "and :file:`.lib`), which knows how to find the necessary functions from " "spam, and also from the Python executable." msgstr "" msgid "" "Manually by defining :c:macro:`Py_NO_LINK_LIB` macro before " "including :file:`Python.h`. You must pass :file:`pythonXY.lib` to the linker." msgstr "" msgid "" "cl /LD /DPy_NO_LINK_LIB /I/python/include spam.c ../libs/pythonXY.lib\n" "cl /LD /DPy_NO_LINK_LIB /I/python/include ni.c spam.lib ../libs/pythonXY.lib" msgstr "" msgid "" "The first command created three files: :file:`spam.obj`, :file:`spam.dll` " "and :file:`spam.lib`. :file:`Spam.dll` does not contain any Python " "functions (such as :c:func:`PyArg_ParseTuple`), but it does know how to find " "the Python code thanks to :file:`pythonXY.lib`." msgstr "" msgid "" "Not every identifier is exported to the lookup table. If you want any other " "modules (including Python) to be able to see your identifiers, you have to " "say ``_declspec(dllexport)``, as in ``void _declspec(dllexport) " "initspam(void)`` or ``PyObject _declspec(dllexport) *NiGetSpamData(void)``." msgstr "" msgid "" "Developer Studio will throw in a lot of import libraries that you do not " "really need, adding about 100K to your executable. To get rid of them, use " "the Project Settings dialog, Link tab, to specify *ignore default " "libraries*. Add the correct :file:`msvcrt{xx}.lib` to the list of libraries." msgstr "" |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |