рдпрд╣ рд▓реЗрдЦ рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рдореЗрд░реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИред рдореБрдЭреЗ
LibRaw рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рддред
рдЖрдЦрд┐рд░реА рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ 2004 рдореЗрдВ C ++ рдореЗрдВ рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦрд╛ рдерд╛ред рд╕реНрдЯрд┐рд▓рдмреЛрд░реНрди рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ (рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдирд╣реАрдВ) рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдореИрдВрдиреЗ рд╡реЗрддрди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХреМрд╢рд▓ рдХреЛ рдмреЗрд╡рдХреВрдлреА рд╕реЗ рдмреЗрдЪ рджрд┐рдпрд╛)ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдХреМрд╢рд▓ рддрдп рдирд╣реАрдВ рд╣реИрдВред рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐
SWIG рдиреЗ рдореЗрд░реЗ рдХрд╛рдо рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдХрд░ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдФрд░ "рдкреЗрди" рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрдиреЗ рдиреЗ рдЗрд╕реЗ рддреЛрдбрд╝ рджрд┐рдпрд╛ред рдореЗрд░реА рд╕реНрдореГрддрд┐ рдкреЗрд╢реЗрд╡рд░ рд╣реИ - рдЕрд░реНрдерд╛рдд, рдЪрдпрдирд╛рддреНрдордХ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдкрд╣рд▓реЗ рдХреВрджрдирд╛ рдкрдбрд╝рд╛ред
рдпрд╣ рд▓реЗрдЦ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП
SWIG рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред SWIG рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ C / C ++ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦрдирд╛ рд╕рдм рдХреБрдЫ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ
рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ (рд╡реИрд╕реЗ, рдореБрдЭреЗ рдпрд╣ рдзрд╛рд░рдгрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдкреНрд░рддрд┐рдорд╛рди рд╣реИ)ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдпреИрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдЪрдврд╝ рдЧрдпрд╛ред рдПрдкрд┐рдХ рдлреЗрд▓ - рд╕рднреА рдЯрд┐рдкреНрд╕ рдФрд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рддреАрди рд╕рд╛рд▓ рдкреБрд░рд╛рдиреЗ рд╣реИрдВред рдЙрдирдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд╕реНрд░реЛрдд рд╕реЗ рдЕрдЬрдЧрд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрджрдо рдЙрдард╛рдирд╛ рдкрдбрд╝рд╛ред рд▓реЗрдЦ рдореЗрдВ рдХреЛрдИ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрджрдо рдирд╣реАрдВ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдЬрдЧрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЯрд┐рдк: рдлрд╝рд╛рдЗрд▓ рдХреЛ "рдмреЙрдХреНрд╕рд┐рдВрдЧ" рдбрд┐рд▓реАрд╡рд░реА рд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ / pycohfig.h рд▓реЗрдВ рдФрд░ рдЪреБрдкрдЪрд╛рдк рдЗрд╕реЗ рдЗрдХрдЯреНрдареЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдбрд╛рд▓реЗрдВ - рдпрд╣ рдХрд╛рдо рдореЗрдВ рдЖрдПрдЧрд╛ред
рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИред рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
Microsoft Visual C ++ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕рдВрд╕реНрдХрд░рдг 2008 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рдпрдерди 2.6+ рдЙрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдпрд╛ рддреЛ рд╕реНрд░реЛрдд рд╕реЗ рдЕрдЬрдЧрд░ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдерд╛, рдпрд╛ рд╡реАрд╕реА ++ 7.0 рдЦреЛрджрдХрд░ рдХрд╛рдИ рдХреЗ рд╕рд╛рде рдХрд╡рд░ рдХрд░рдирд╛ рдерд╛, рдФрд░ рддрдм рднреА 6.0ред рдЗрд╕рд╕реЗ рднреА рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреЛ
MinGW рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡реИрд╕реЗ? рдореИрдВрдиреЗ рд╕реНрдЯреНрд░рд╛рдмреЗрд░реА рдкрд░реНрд▓ рдореЗрдВ "рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓" рдкрд░реАрдХреНрд╖рдг рдореЙрдбреНрдпреВрд▓ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ (рдпрджрд┐ рдЖрдк рдкреНрд░рд╛рдЪреАрди рдЕрдЬрдЧрд░-рдореЛрддреА рдпреБрджреНрдз рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХрд╛рдлреА рд╕рдирдХреА рд╣реИрдВ)ред рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рдкрд╛рде рдореЗрдВ рдкрд╣рд▓рд╛ gcc рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ SWIG рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдиреЗ рдФрд░ рдЗрд╕реЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рд╡рд┐рдВрдбреЛрдЬ (swigwin-2.0.4) рдХреЗ рддрд╣рдд рдирд┐рд░реНрдорд┐рдд
SWIG рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ PATH рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВред
рд╡рд┐рдзрд┐ рдПрдХ: рд╡рд┐рдЬреБрдЕрд▓ C ++
рд╣рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
PYTHON_INCLUDE = C: \ Python \ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ
PYTHON_LIB = C: \ Python \ Libs \ python27.lib
рдлрд┐рд░ рдЖрдк рдЪрд╛рд░реЛрдВ рдУрд░ рдмреЗрд╡рдХреВрдл рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ - рддреИрдпрд╛рд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд▓реЗ рд▓реЛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди (.sln) рдФрд░ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд╣рд▓реЗ рд╣реА рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдФрд░ рд╢рд╛рдВрддрд┐ рд╕реЗ, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЕрдкрдирд╛ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдПрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
SWIG\Examples\python\class\exmple.sln
ред
examples.i
рдирд╛рдо рджреЗрдВ
mymodule.i
,
mymodule.cxx
рдФрд░
mymodule_wrap.cxx
, рдХреНрд░рдорд╢рдГ,
mymodule.i
,
mymodule.cxx
рдФрд░
mymodule_wrap.cxx
рдирд╛рдо рдмрджрд▓реЗрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреБрднрд╡ рдЕрднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд╛рд░рдХ рдХреЙрдорд░реЗрдб рдХреЗ рд▓рд┐рдП,
рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдПрдХ
рдХреБрдХреА рдирд┐рд░реНрджреЗрд╢ ред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдереЛрдбрд╝рд╛ рдкреБрд░рд╛рдирд╛ (рдпрд╛ рд╢рд╛рдпрдж рдмрд╣реБрдд рдирдпрд╛)ред рдЗрд╕рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рдкрд╛рдпрд╛ред рдиреАрдЪреЗ рд░реВрд╕реА рдореЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рд╣реИ, рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд:
- рд╡рд┐рдВрдбреЛрдЬ DLL рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ
- рд╣рдо рдЕрдкрдиреА рдХрдХреНрд╖рд╛рдУрдВ / рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП
my_module.cxx
(рдпрд╛ .c) рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП my_module.i
ред рдФрд░ рд╣рдо ( my_module_wrap.cxx
) my_module_wrap.cxx
рдкрд╣рд▓реА рджреЛ рдлрд╛рдЗрд▓реЗрдВ, рдмреЗрд╢рдХ, рдореИрдВ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХрд╛рдЯрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕реЗ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП)
- рд╣рдо рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪреБрдиреЗрдВ
my_module.i
, рдЧреБрдгреЛрдВ рдореЗрдВ ( рдХрд╕реНрдЯрдо рдмрд┐рд▓реНрдб рд╕реЗрдЯрдЕрдк ) рд╕реЗрдЯ:
- рдХрдорд╛рдВрдб рд▓рд╛рдЗрди : swig.exe -c++ -python $(InputPath)
- рдЖрдЙрдЯрдкреБрдЯ : $(InputName)_wrap.cxx
(C рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ -c++
рд╕реНрд╡рд┐рдЪ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ .cxx
рдПрдХреНрд╕рдЯреЗрдВрд╢рди (.c рдорддрд╛рдзрд┐рдХрд╛рд░)ред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдлрд╝рд╛рдЗрд▓ my_module.i
рд╕реЗ my_module_wrap.c(xx)
рдлрд╝рд╛рдЗрд▓ my_module.i
- рдЖрдЧреЗ рдЖрдкрдХреЛ рдЕрдЬрдЧрд░ рд╣реЗрдбрд░ рдХрд╛ рд╕реНрдерд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЧреБрдгреЛрдВ рдореЗрдВ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЧреБрдг рдЪреБрдиреЗрдВ "/ C ++ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ
$(PYTHON_INCLUDE)
рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ (рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЙрд╕реЗ рд╡реНрдпрд░реНрде рдореЗрдВ рдХреБрдЫ рднреА рдкреВрдЫрд╛ рд╣реИ?)
- рд▓рд┐рдВрдХрд░ рдХреЗ рдЧреБрдгреЛрдВ рдХреА рдпреЛрдЬрдирд╛ рдкрд░ рдЖрдЧреЗ (рд▓рд┐рдВрдХрд░):
- рдЗрдирдкреБрдЯ ┬╗рд╕рд╢рд░реНрдд рдирд┐рд░реНрднрд░рд┐рдпрд╛рдБ : "$(PYTHON_LIB)"
- рд╕рд╛рдорд╛рдиреНрдп ┬╗рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ : $(ProjectDir)\_$(ProjectName).pyd
рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрди рдЪреЛрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ, рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ - рдореИрдВ рдиреАрдЪреЗ рдмрддрд╛рдКрдВрдЧрд╛
- рдЖрдк рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд░рд┐рд▓реАрдЬрд╝ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВред рдбреАрдмрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрд░реЛрдд рд╕реЗ рдЕрдЬрдЧрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
- рд▓рд╛рдн
рд╡рд┐рдзрд┐ рджреЛ: distutils
рдЖрдирдиреНрджрд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдкрд╛рдпрдерди 2.7 рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
рдбрд┐рд╕реНрдЯреБрдЯрд┐рд▓реНрд╕ (рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ,
3 рдХрд┐рд▓реЛрдЧреНрд░рд╛рдо shamanism рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдбреНрдпреВрд▓ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрдж рдХрд┐рдпрд╛
рдЧрдпрд╛ рд╣реИред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рд╣рдо рдЙрдкрд░реЛрдХреНрдд рджреЛрдиреЛрдВ (рд░рд╛рдд рддрдХ рдирд╣реАрдВ) рдПрдорд╡реАрд╕реА 2008 рдФрд░ рдореБрдХреНрдд рдорд┐рдВрдЬ рдбрдмреНрд▓реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд░рд╛рд╕реНрддреЗ рдореЗрдВ рд╣рдореЗрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЫреЛрдЯреА рд░реЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдорд╛рдерд╛ рд╕рд╣рд▓рд╛рдпрд╛, рдЕрдм рдореИрдВ рдмрддрд╛рдКрдВрдЧрд╛ред
рдлрд┐рд░, рд╣рдо SWIG рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЕрдорд╛рдирд╡реАрдп рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рддреЛ,
SWIG/examples/classes
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ,
setup.py
рдмрдирд╛рдПрдБ
рдкрд╣рд▓реА рд░реЗрдХред
рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ
LINK : error LNK2001: unresolved external symbol initexample
ред
рдпрд╣ рдХрд╣рд╛рдБ рд╕реЗ рдЙрдЧрддрд╛ рд╣реИ?
рдкрд╛рдпрдерди, рдЬрдм рдореЙрдбреНрдпреВрд▓ "рд╣рд╛рде рд╕реЗ" рдмрдирд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рд┐рдд рдореЙрдбреНрдпреВрд▓ (рдмрд╛рдЗрдирд░реА рднрд╛рдЧ) рдореЗрдВ
init<_>
рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдЧрд╛ред рдпрд╣ рдЗрд╕рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ C / C ++ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдмрд╛рдЗрдирд░реА рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд░рдиреЗ рдкрд░ рдЗрд╕рдХрд╛ рд╕реНрд╡рд╛рдж рд▓реЗ рд╕рдХреЗ (рдФрд░ рдЕрдЬрдЧрд░ рдХреЛ рдмрддрд╛рдПрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ)ред рд╡реНрд░рдкрд░ (SWIG) рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди SWIG рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рджреЛ (!)
<_>.py
рдмрдирд╛рддрд╛ рд╣реИ:
<_>.py
рдПрдХ рдЕрдЬрдЧрд░ рдЖрд╡рд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдХреЗ рдореЙрдбреНрдпреВрд▓ рдФрд░
_<_>.pyd
рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рджреЗрд╢реА рдХреЙрд▓
_<_>.pyd
(рдзреНрдпрд╛рди рджреЗрдВ рдЕрдВрдбрд░рд╕реНрдХреЛрд░) рдПрдХ рдмрд╛рдЗрдирд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдмрд╛рдЗрдирд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдореВрд▓ рдПрдХ (рдЕрдВрдбрд░рд╕реНрдХреЛрд░ "рдирд┐рд╣рд┐рдд") рдХреЗ рд╕рдорд╛рди
import
рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде "рдЕрдЬрдЧрд░ рдореЗрдВ" рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рджреЗрд╢реА рд░реИрдкрд░ рдФрд░ рдмрд╛рдЗрдирд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдирд╛рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рд╡реЗ рдЕрд▓рдЧ - рдЕрд▓рдЧ рд╣реИрдВред
SWIG рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдмрд╛рдЗрдирд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП, init_ <рдореЙрдбреНрдпреВрд▓_name> рдирд╛рдордХ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдВрдХрд░ рдХреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдкрддрд╛ рд╣реИред рд╡рд╣ рдЧрд▓рддреА рд╣реИред
рджреВрд╕рд░реА рд░реЗрдХ
рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рд╕реНрд░реЛрдд рдкрд░ рдЪрдврд╝рдиреЗ рдореЗрдВ рдореБрдЭреЗ рдХреБрдЫ рд╕рдордп рд▓рдЧрд╛ рдХрд┐ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕реНрд╡рд╛рдЗрдЧ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЙрд▓ рдореЗрдВ рдХреИрд╕реЗ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ,
distutil
рд╣рдореЗрдВ рд╕реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП,
-c++
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ (
-threads
рдкреИрд░рд╛рдореАрдЯрд░ "рд╢реЛ-рдСрдл рдХреЗ рд▓рд┐рдП" рдЬреЛрдбрд╝рд╛
-threads
, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред
рд╕рднрд╛
рдЕрдм рд╣рдо рд╕рдордЭ рдЧрдП рд╣реИрдВ, рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:
MVC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ:
python setup.py build
MinGW рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ:
python setup.py build -cmingw32
рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рднреА рдЕрдЬреАрдм рд╣реИред
рдХрд┐рд╕реА рднреА рд╕рд▓рд╛рд╣ (рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕рд░рд▓) рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрд▓реЛрдЪрдирд╛, рднреА (рд▓реЗрдХрд┐рди рдЕрдзрд┐рдорд╛рдирддрдГ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ)ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореБрдЭреЗ рдкрд╣рд▓реА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдмрд╛рдж рдЬреЛ рд╣реБрдЖ рдЙрд╕рд╕реЗ рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЗрдЦ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдкрдбрд╝реЗрдЧрд╛ред рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝реА рдЧрд╣рд░рд╛рдИ рдЦреЛрджреАред