ä»æ¥ã¯ãWindowsãã©ãããã©ãŒã äžã®MS Visual C ++ã§æ§ç¯ããããããžã§ã¯ããšå¯Ÿè©±ããéã®ãã©ã³ã¹ã³ãŒãã£ã³ã°ã®åºæ¬çãªåé¡ãšãå®éã«Pythonçšã«äœæãããBoost.Pythonã©ã€ãã©ãªã®ãããã§C ++èšèªã®æãå¿«é©ãªã¹ã¯ãªãããã€ã³ãã£ã³ã°ã«ã€ããŠèª¬æããŸãã
çµå±ã®ãšãããææ°ããŒãžã§ã³ã®Python 3.xã®Windows OSã§C ++ã®ã¢ããªã±ãŒã·ã§ã³ã«é©åãªã¹ã¯ãªããã䜿çšããããPythonã®ã¢ããªã±ãŒã·ã§ã³ã«C ++ã§æžãæããããã¢ãžã¥ãŒã«ã®ã³ãŒãã®æãé«éåãããã»ã¯ã·ã§ã³ã䜿çšããå¿ èŠããããŸãã ã©ã¡ãã®å Žåã§ããå°ãªããšãäž¡æ¹ã®èšèªãããç¥ã£ãŠãããªãããããèªãã¹ãã§ãã
ååãšããŠãããã¹ãã®ãã©ã³ã¹ã³ãŒãã®åé¡ã«é¢ããäœæéãã®èšç®ã§ããªããéå±ãããŸããã ãã®åé¡ã¯æ°ãããã®ã§ã¯ãªããã©ãã§ãããŸããŸãªæ¹æ³ã§è§£æ±ºãããŸããã»ãšãã©ã®å Žåãããããæ¹æ³ã§è§£æ±ºãããŸããã€ãŸããããã°ã©ããŒã®è©ã«ç§»ããŸãã
Pythonã§ã¯ãããŒãžã§ã³3.0以éãããã¹ãèªäœã®ã¿ãæååãšèŠãªãããšã決å®ãããŸããã ããã¹ãèªäœãã©ã®ããã«ãšã³ã³ãŒãããããã¯åé¡ã§ã¯ãããŸããããUnicodeã§ãšã³ã³ãŒãããããããæååã®æŠå¿µèªäœã¯ãšã³ã³ãŒããšã¯å®å šã«ç°ãªããŸãã ã€ãŸããæååå ã®æåã«å¯Ÿå¿ããæ°åãç解ããæ¹æ³ã¯ãããŸãããããã§ãªãå Žåã¯ããšã³ã³ãŒããæå®ããŠãã€ãé åã«ãšã³ã³ãŒãããæ¹æ³ãç解ããããšã¯ã§ããŸããã
"!".encode('cp1251')
äžèšã®äŸã¯ããHelloïŒãè¡èªäœã¯ããã·ã¢ãç±³åœãäžåœãWindowsãLinuxãMacOSã®ãããã§è¡šç€ºããŠãããHelloïŒãè¡ã®ãŸãŸã§ããããšã瀺ããŠããŸãã æååã¡ãœããstr.encodeïŒãšã³ã³ãŒãïŒã«ãã£ãŠãã€ãé åã«ãã³ãŒããããšãäžçã®ã©ãã«ããŠãã©ã®ãã©ãããã©ãŒã ã䜿çšããŠãããã«é¢ä¿ãªãããã€ãé åèŠçŽ ã®å€ã¯åžžã«åãã«ãªããŸãã ãããŠããã¯çŽ æŽãããïŒ
ããããç§ãã¡ã¯å°çã«æ»ããŸãã ãããªWindowsããã......
å šäœã®åé¡ã¯ãMS Visual Studioã®çŽ æŽãããéçºç°å¢ã«ãããŸãã ãããŠäœããããC ++ã®ãã¹ãŠã®è¡ãWindowsã³ãŒãããŒãžã®ãšã³ã³ãŒãã§ä¿èšŒãããŠãããšããç¹ã§æ³šç®ã«å€ããŸãã ã€ãŸãããã·ã¢ã§ã¯ããã¹ãŠã®è¡ãåžžã«ã cp1251 ãã«ãªããŸãã ãããŠããã¹ãŠã¯åé¡ãããŸãããããã®ãšã³ã³ãŒãã¯WebããŒãžãžã®åºåãXMLã§ã®ä¿åãåœéããŒã¿ããŒã¹ãžã®åºåãªã©ã«ã¯é©ããŠããŸããã ãHelloããšãã圢åŒã®è¡ãå«ãMicrosoftãææ¡ããããŒãžã§ã³ã¯ããå°ãåãå ¥ããããŸããããã®ãããªè¡ãæã€C ++ã§ãããã©ãã»ã©çŽ æŽããããã¯ããã£ãŠããŸãã ããã«ãcp1251ã®åœ¢åŒã®äžé£ã®è¡ãå«ããããžã§ã¯ããæ¢ã«ååŸããŠãããšããäºå®ããé²ããŸãã std :: stringããã³char *ã§åäœããå®å šã«åäœããã®ã¬ãã€ãã®ã³ãŒãïŒè¿ éãã€å¹ççã«ã
PythonããC ++ã«ç§»è¡ããå ŽåãPythonæååã¯å éšPythonã¡ã¢ãªã䜿çšããŠchar *ã«å®å šã«å€æãããããšã«æ³šæããŠãã ãããPython3.xã®ãã¹ãŠã®æååã¯å°ãªããšãUTF-8ã«ä¿åãããŠãããGCãšåç §ã«ãŠã³ã¿ãŒã«ãã£ãŠæ³šææ·±ãç£èŠãããŠããããã§ãã ãããã£ãŠãåã³ïŒMicrosoftã®ãã®UCS-2ãUnicodeãšããŠæž¡ãå¿ èŠã¯ãªããéåžžã®æååã䜿çšããŸãã ããã«ããã·ã¢ã®äŒç€Ÿã®ããŒã«ã«ããŒã¿ããŒã¹ã¯ãWIN-1251ããUTF-8ã«åãæ¿ãããšãã«ããŒã¿ã®ãµã€ãºã2åã«ãªã£ãããšã«æè¬ããªãããšã«æ³šæããŠãã ããã
äžè¬ã«ãåé¡ã瀺ãããŸãã
ä»æ±ºå®ã
ããããæ¢ã«Python 3.xã®ææ°ããŒãžã§ã³ïŒçŸåšã¯Python 3.3ïŒããæã¡ã§ãããããŸã ã€ã³ã¹ããŒã«ãããŠããªãå Žåã¯ã www.python.org / download / releasesããææ°ããŒãžã§ã³ãå ¥æããŠãã ããã
ãŸããããããMS Visual Studioãæã£ãŠããŸãïŒçŸæç¹ã§ã¯ãåŸè ã¯VS2012ã§ãããVS2010ã®ä»¥åã®ããŒãžã§ã³ã§ã¯ä»¥äžã®ãã¹ãŠãåœãŠã¯ãŸããŸãïŒã
C ++ã¯ã©ã¹ãPythonã«ãªã³ã¯ããã«ã¯ãBoost.Pythonã©ã€ãã©ãªãå¿ èŠã§ãã ããã¯ãã»ãŒæšæºã®Boostã©ã€ãã©ãªã®äžéšãšããŠæäŸãããŠããŸãïŒ www.boost.org ïŒçŸæç¹ã§ã¯ãææ°ããŒãžã§ã³ã¯1.52ã§ãããæ€èšŒãããŠãããæ倧1.44ãŸã§æå¹ã§ãïŒã
æ®å¿µãªãããä»ã®äœããšã¯ç°ãªããBoost.Pythonãã³ã³ãã€ã«ããå¿ èŠããããŸãã ä»ã®ã©ã€ãã©ãªãšäžç·ã«ãŸã ãã«ãããŠããªãå Žåã¯ã次ã®Boost.Buildã³ãã³ãã䜿çšããŠã®ã¿Boost.Pythonããã«ãã§ããŸãïŒbjamçµç±ã®å€ãããŒãžã§ã³ã§ã¯ïŒïŒ
b2 --with-python --build-type=complete
x64çšã®Python 3.xãããŠã³ããŒãããå Žåã¯ãaddress-model = 64ãæå®ããå¿ èŠããããŸãã
詳现ã«ã€ããŠã¯ãBoost.Buildã®ããã¥ã¡ã³ããåç §ããŠãã ããã
ãã®çµæã{BoostDir} \ stage \ lib \ã«ã¯ãboost-python *ã®ãããªã©ã€ãã©ãªãããããããã¯ãã§ãã ç§ãã¡ã¯ããããå¿ èŠãšããŠããŸã!!ã
ãããã£ãŠãå®éã«åé¡ãåçŸããŠãã ããã ç°¡åãªã¯ã©ã¹ãæžããŸãïŒ
class MY_EXPORT Search { public: static string That( const string& name ); };
圌ã®å¯äžã®æ¹æ³ã®ãã®å®è£ ã§ã¯ïŒ
string Search::That( const string& name ) { if( name == " !" ) return ""; else throw runtime_error( " !" ); }
å®éã«ã¯ããã¹ãŠãã¯ããã«è€éã§ããã»ãšãã©ã®å Žåãããªã«æåã®ãã£ãŒã«ããæã€ããŒã¿ããŒã¹ã®ã¬ã³ãŒãããããå€èªäœãããªã«æåã§ããããã¹ãŠãWindows-1251ã§ãšã³ã³ãŒããããŠããŸãã ãããããããã°ããã«ã¯ããã®ãã¹ãã±ãŒã¹ã§ååã§ãã C ++ãšã®éã§æååã®å€æãè¡ãããPythonã§äŸå€ãæž¡ãããŸãã
Boost.Pythonã䜿çšããŠãå°ããªã©ã€ãã©ãªãã©ããããŸãã
BOOST_PYTHON_MODULE( my ) { class_<Search>( "Search" ) .def( "That", &Search::That ) .staticmethod( "That" ) ; }
ãããžã§ã¯ãèšå®ã®BoostãšãœãŒã¹ã©ã€ãã©ãªãžã®äŸåé¢ä¿ãå¿ããªãã§ãã ããïŒ
çµæã®ã©ã€ãã©ãªã®ååãmy.pydã«å€æŽããŸãïŒã¯ããæ¡åŒµåãå€æŽããã ãã§ãïŒã
ç§ãã¡ã¯ãPythonã§äœæ¥ããããšããŠããŸãã ã³ã³ãœãŒã«ããçŽæ¥ãEclipse + PyDevã®ãããªIDEãæå ã«ãªãå Žåã¯ã2è¡ã§ã€ã³ããŒãããŠäœ¿çšã§ããŸãã
import my my.Search.That( " !" )
ããã¯ãŸã .dllã§ãããããããSearchã¯ã©ã¹ã®ãœãŒã¹ã©ã€ãã©ãªã®.dllãå¿ èŠã§ããããšãå¿ããªãã§ãã ãããããã«ãæ°ããã©ãããŒã©ã€ãã©ãªã«ã¯ãããšãã°MS VS2012ã®{BoostDir} \ stage \ lib \ããã®å¯Ÿå¿ããã¢ã»ã³ããªã®.dll Boost.Pythonãå¿ èŠã«ãªããŸããããã°ïŒãã«ãã¹ã¬ããDLLïŒããã«ãããããã®Boost 1.52ã¯boost_python-vc110-mt-gd-1_52.dllã§ãã
.dllã«äœãæ¬ ããŠããããæ確ã§ãªãå Žåã¯ãåãDependency Walkerã䜿çšããŠäŸåé¢ä¿ã調ã¹ãŸãïŒ www.dependencywalker.com-äŸåã©ã€ãã©ãªãéããŸãã
ã ããããªãã¯
my
ã©ã€ãã©ãªãã€ã³ããŒãã
my
my.Search.That( " !" )
ãå®è¡ããããšãã§ãã
ãã¹ãŠããŸãããã°ãC ++ããã®äŸå€ã空ã®ããã¹ãã§è¡šç€ºãããŸãã ã€ãŸããå¿ èŠãªifãã©ã³ãã«å°éããªãã£ãã ãã§ãªããäŸå€ããã¹ãã¯éä¿¡ããæ¹æ³ã§ãã©ã³ã¹ã³ãŒããããŸããã§ããïŒ
MS Visual Studioã®ã ããã»ã¹ã«ã¢ã¿ãã ããä»ããŠPythonããã»ã¹ã«åå ãããšã
Search::That( const string& name )
name
ãUTF-8ã«ãªã£ãŠããããšãããããŸãã Boost.Pythonã¯æååãã©ã®ãšã³ã³ãŒãã£ã³ã°ã«äžããããç¥ããªããããUTF-8ã®ããã©ã«ããäžããŸãã
ãã¡ãããVisual Studioã®ã³ãŒãã¯Windows-1251ã«å®å šã«å¯Ÿå¿ããŠããããããPCãRsïŒããå®éã«ã¯ãããã¯ç§ã ïŒãã§ããããšãç解ã§ããŸããã èŠèŠé害è ãšèŽèŠé害è ã®éã§äŒè©±ãã§ããŸãã åãçç±ã§ãPythonã®C ++ããã®äŸå€ããã¹ãã¯è¡šç€ºãããŸããã
ããŠãä¿®æ£ããŸãã
æåã«æãæµ®ãã¶ã®ã¯ãå ã®ã¯ã©ã¹ããã©ã³ã¹ã³ãŒãå¯èœãªå¥ã®ã¯ã©ã¹ã«ç¶æ¿/ã©ããããããšã§ãã
ãããä»ã®ã¯ã©ã¹ãèŠãŠãé çªãåŸ ã£ãŠããéã«å€ç¬ã«è¶³ãã·ã£ããã«ããŸãã 人çã®ååãéããæºåã¯ã§ããŠããŸããïŒ ããã§ãªãå Žåã§ããçç£æ§ã®æåã®æž¬å®å€ã¯ãåå«ãåããšãã«ããªããã©ãã ãééã£ãŠãããã瀺ããŸãã ã©ãããããã¯ã©ã¹ãC ++ãªããžã§ã¯ãã«æ»ãããšãããšãæçµçã«ã¯å°çã®ãããªåé¡ãçºçããŸãã ããªãã¯ããããæã£ãŠããã§ããããç§ãä¿¡ããŠïŒ ç§ãã¡ã¯äž¡æ¹åã«æ©ãããªããžãæ§ç¯ããŠããŸããã¯ã©ã¹ã©ãããŒã¯ç®çã®ã¯ã©ã¹ã®ã¡ãœãããšããããã£ãçŽæ¥åç §ããå¿ èŠããããŸãã C ++åŽã®python :: Boostãã<TïŒ>ïŒobjïŒãæœåºããŸãã
æååãC ++ãšPythonã®éã移åãããšãã«ãBoost.Pythonã§è¡ããããã¹ãŠãåæããŸãã PyUnicode_AsStringããã³PyUnicode_FromStringé¢æ°ã䜿çšããçŽ æŽãããå Žæãããã€ããããŸã ã çŽç²ãªCã®ãã€ãã£ãPython APIãå°ãç¥ã£ãŠããã°ïŒããããªãå Žåã¯ããã¥ã¡ã³ããèªãã§ïŒãããããã¹ãŠã®æªã®æ ¹æºã§ããããšãç解ããŠããŸãã Boost.Pythonã¯Python 2ãš3ã®ããŒãžã§ã³ãå®å šã«åºå¥ããŸãããUnicodeæååããã¡ã€ã«ã·ã¹ãã ã®ã³ãŒãããŒãžã§ãšã³ã³ãŒããããæååã«å€æããå¿ èŠãããããšãç解ããããšã¯ã§ããŸããããç¬ç«ããŠäœ¿çšããããšãææ¡ãããŠãã代æ¿æ©èœãæäŸããŸãïŒ
PyUnicode_DecodeFSDefault-ãã¡ã€ã«ã·ã¹ãã ã®ãšã³ã³ãŒãã§æååããšã³ã³ãŒããïŒãã®å Žåã¯Windows-1251ã®ã¿ïŒãæ¢è£œã®æååãªããžã§ã¯ããè¿ããŸããããã¯ããã¡ã€ã«str.cppããã³converter \ builtin_convertersã® {BoostDir} \ libs \ python \ src \ã®PyUnicode_FromStringã®ä»£ããã«æé©ã§ã.cpp
PyUnicode_DecodeFSDefaultAndSize-åãã§ãããæååã®ãµã€ãºããããŸãã åããã¡ã€ã«å ã®åæ§ã®PyUnicode_FromStringAndSizeã®ä»£æ¿ãšããŠé©ããŠããŸãã
PyUnicode_EncodeFSDefault-å察ã«ãPythonããæååãªããžã§ã¯ããååŸããŠãã©ã³ã¹ã³ãŒãããçµæããã€ãã®é åïŒ PyBytesãªããžã§ã¯ãïŒãšããŠè¿ããŸãããã®åŸãPyBytes_AsStringé¢æ°ã䜿çšããŠããã€ãé åããéåžžã®æååãæœåºã§ããŸãã PyUnicode_AsUTF8Stringé¢æ°ã®ä»£ããã«ã ãã¢ã§éå€æã«å¿ èŠã§ã
PyBytes_AsStringïŒPyUnicode_EncodeFSDefaultïŒobjïŒïŒã¯ããã¯ã_PyUnicode_AsStringïŒobj ïŒã眮ãæããŸãããå®è³ªçã«åãããšãè¡ããŸãããå€æã¯è¡ããŸããã
ã ãããç§ãã¡ã¯æ¯ã«æŠè£ ããŠãããé¡ã®æµãç¥ã£ãŠããŸãã圌ãèŠã€ããŠäžåããã ãã§ãïŒ
ã³ãŒã{BoostDir} \ libs \ python \ src \ã® PyUnicode_ *ã䜿çšãããã¡ã€ã«ãš{BoostDir} \ boost \ python \å ã®ããããŒãã¡ã€ã«ãå¿ èŠã§ããããã«ãããã«ç§å¯ãæããã«ããŸããerror.cppãã¡ã€ã«ã®äŸå€ãä¿®æ£ããå¿ èŠããããŸãã
äžè¬çã«ããªã¹ãã¯æ¬¡ã®ãšããã§ãã
builtin_converters.cpp -PythonããC ++ãžããŸãã¯ãã®éãžã®æååå€æãç·šéããŸã
builtin_converters.hpp-ããããŒãã¡ã€ã«ã®å€æãã¯ããä¿®æ£ããå¿ èŠããããŸã
str.cpp -Python strã¯ã©ã¹ïŒC ++ã®éåžžã®pythonæååïŒäžã®C ++ã§ã©ãããŒãç·šéããŸãã
errors.cpp -C ++ããPythonãžã®äŸå€ã®ããã¹ãã®åãæž¡ããä¿®æ£
ããã€ãã®å€æŽãããããããã¯å¯Ÿè±¡ã§ããããããã¯ãã¹ãŠä»¥äžã«ãªã¹ããããŠããŸããèšäºã«æ·»ä»ãããã¢ãŒã«ã€ãã«ã¯ãååãšããŠãå€æŽã«é¢ããããããšã¬ããŒããå«ãŸããŠããŸãããã¹ãŠã®å€æŽã¯ã1è¡ã®ã³ãŒããè¶ ããã1ã€ã®åŒã³åºãåœä»€ãããå€ãã®å Žåãåèšã§æ£ç¢ºã«13 x 4ãã¡ã€ã«ã§ãã ããªãã¯è¿·ä¿¡è ã§ã¯ãããŸãããïŒ..
ãã¹ãŠã®ç·šéåŸãäžèšã®ã³ãã³ãã䜿çšããŠBoost.Pythonã®ã¿ãåéããŸãã
b2 --with-python --build-type=complete
ïŒã¢ã»ã³ããªãx64çšã§ããå Žåãã€ãŸãããããžã§ã¯ããšãã·ã³ã«ã€ã³ã¹ããŒã«ãããŠããPython 3.xã®äž¡æ¹ã64ãããã¢ãã¬ã¹æå®ã¢ãŒããã¯ãã£çšã«ã¢ã»ã³ãã«ãããå Žåã
address-model=64
ãè¿œå ããŠãã ãããïŒ
Boost.Pythonãã¢ã»ã³ãã«ãããããæŽæ°ãããã©ã€ãã©ãªã䜿çšããŠãããžã§ã¯ããåã¢ã»ã³ãã«ããŸãã.libãš.dllã ãã§ãªãã1ã€ã®ããããŒãã¡ã€ã«ãæŽæ°ãããŸãã
å€ããŠéå±ãª.dllããæ°ããåéãããã®ã«çœ®ãæããããšãå¿ããªãã§ãã ããã ããããã³ããŒããããšãå¿ããªãã§ãããã
çå®ã®ç¬éïŒ
import my res = my.Search.That( ' !' ) print( res )
ãã¹ãŠã®åãã³ãŒãããäºæ³ããããã®ãã€ãŸãæååãIããè¿ãããã«ãªããŸããã
Python 3ããã®ãªããžã§ã¯ããæååãšã¿ãªãå Žåãéåžžã«Unicodeã®ããªã«æåã¢ã«ãã¡ãããã§ãïŒ
ã§ã¯ãäŸå€ãã©ã®ããã«çºçãããã確èªããŸãããã
import my res = my.Search.That( ' !' ) print( res ) try: my.Search.That( ' - !' ) except RuntimeError as e: print( e )
ç§ãã¡ã®äŸå€ã¯ãæšæºã®PythonäŸå€ã§ããRuntimeErrorã®åœ¢åŒã§ãé©åãªããã¹ããšãšãã«çŽ æŽããããã®ã«ãªããŸãã
ããŒãã¹ãšããŠãC ++åŽã§boost :: python :: strãªããžã§ã¯ããäœæããããã«Unicodeã«å€æããŸããããã¯ãC ++åŽã§ããªã«æåã¢ã«ãã¡ããããšåŒã°ããPythonãªããžã§ã¯ãã®å±æ§ãå¿ èŠãªå Žåã«åœ¹ç«ã¡ãŸãã
object my = import( "my" ); object func = my.attr( str("") ) int res = extract<int>( func( x * x ) );
MS Visual C ++ã§ã¯ããã®ãããªã³ãŒãã«åé¡ã¯ãããŸããã ãã¹ãŠãå®å šã«åãåºãããåŒã³åºãããå¿ èŠãªãã®ããã¹ãŠè¿ãããŸãã
ããŠãC ++ããPythonã³ãŒããåŒã³åºãããšã«ã€ããŠè©±ããŠããã®ã§ãããããäŸå€ããã£ããããæ¹æ³ã«èšåãã䟡å€ããããŸãã
C ++ã¬ãã«ã§ã®Pythonããã®ãã¹ãŠã®äŸå€ã¯ãerror_already_setåããã³ãã¹ãŠã®åãboost :: pythonã«ãã£ãŠãã£ãããããŸãã ããã¹ããååŸããããã«ãã¿ã€ããšäŸå€ã¹ã¿ãã¯ã¯è€éã§ã¯ãªãããã§ãã詳现ã«ã€ããŠã¯ã wiki.python.org / moin / boost.python / EmbeddingPython-ã»ã¯ã·ã§ã³PythonäŸå€ã®æœåºãåç §ããŠãã ããã 倧éšåã®å ŽåãäŸå€ã®ããã¹ããããã¯ã¢ããããã ãã§ããããã¡ãããç¬èªã®äŸå€ã®ããžãã¯ãèãåºããªãéããå¿ èŠãããŸããã ãããããã®å Žåã¯ãäŸå€ãã©ã³ã¹ã¬ãŒã¿ãŒãäœæããæ¹ãããã§ããããããã¯ãŸã£ããå¥ã®è©±ã§ã...
åèš
ãã€ãã£ãã®MS Visual C ++ã³ãŒããšå°ããªBoost.Pythonãããã䜿çšããéåžžã®Pythonã³ãŒããšåéã«ãªããŸãããå®éã«ã³ãŒããå€æŽããããšãªããPython APIã®äžéšã®é¢æ°ã®åŒã³åºããããã€ãã®å Žæã§ããã€ãã«å€æŽããè¿œå ã®ãã©ã³ã¹ã³ãŒãã£ã³ã°ãå®è¡ããŸããã ãã¹ãŠã¯Python APIèªäœãä»ããŠè¡ãããããããªããžã§ã¯ãã«å²ãåœãŠãããã¡ã¢ãªãstd ::æååãããã³Microsoftãæšæºã©ã€ãã©ãªã®æ°ããã¡ã«ããºã ã«æ éã«å ¥ããçŽ æŽããããã¥ãŒããã¯ã¹ãéããŠããŒãã«ã¢ã¯ã»ã¹ããä»ã®ææã«å¯ŸåŠããŸãã ããïŒ çš®é¡ã¯ãããŸããïŒ Pythonã¯ç§ãã¡ã®ããã«ãã¹ãŠãè¡ããŸããç§ãã¡ã¯åœŒãå°ãå©ããå¿ èŠããããŸããã
éåžžã®äººéã¯ããšã³ã³ãŒããèæ ®ããããšãªãVisual Studioã§ã³ãŒããäœæã§ããŸãã ãããããããã«ã€ããŠãç¥ããã«ã ååãšããŠãåããã©ã³ã¹ããŒãããŒãïŒãããã³ã«ãããŒã¿ãã±ãããªã©ïŒã®åéã®çãå°é家ã¯ããããèªèãã¹ãã§ã¯ãããŸããã
ç¹ã«å¥œå¥å¿çãªäººã¯ãã³ã³ããŒãžã§ã³ã®æ倱ã枬å®ã§ããŸãã ç§ã®æž¬å®ã«ãããšããããã¯éåžžã«éèŠã§ã¯ãªããããéåžžã«é ãWebããŒãžçæã®ã³ãŒããC ++ããPythonã®1ã€ã®join +圢åŒã«æžãæãããšãã»ãŒ10ïŒ å éãããŸããã ããã¯ãäžèšã®å€æŽã«äŒŽããã©ã³ã¹ã³ãŒãã£ã³ã°ãèæ ®ããŠããŸãã ãããã£ãŠãC ++ã®ã³ãŒããååã«å€§ããªæååãåéããå ŽåïŒä»®äºçŽã䜿çšããå Žåã§ãïŒããã®ãããªæ倱ã®éèŠæ§ã¯æ³åã§ããŸãã
å®å®æ§ã®èŠ³ç¹ãããå°ãªããšã6ãæéãå°ãªããšããããã®å€æŽã«åºã¥ããŠæ§ç¯ãããã·ã§ã«ãäœæ¥ãµã€ãã§å®å šã«å転ããŠããããã«ãªã£ãŠããŸãïŒãã ããBoostããŒãžã§ã³ã¯çŸåšã®ãã®ããã¯ããã«å€ãã§ãïŒã çŸåšãŸã§ããã¹ãŠãå®å®ããŠåã³ãŒãã£ã³ã°ãããèŠæ ã¯çºçãããçºçããŸããã§ããã
å€æŽãå«ãçŽæãããã¢ãŒã«ã€ã
Boost.Pythonã©ã€ãã©ãªãã¡ã€ã«ã®å€æŽã«é¢ããã¬ããŒããšãããã以äžã«ç€ºããŸãã
www.2shared.com/file/NFvkxMzL/habr_py3_cxx.html
ãŸãããã¹ããããžã§ã¯ãïŒx64ã§ãã«ãïŒãå«ãå°ããªã¢ãŒã«ã€ããå«ãŸããŠããŸãã
www.2shared.com/file/FRboyHQv/pywrap.html
䟿å©ãªãªã³ã¯
Pythonããã¥ã¡ã³ããžã®ãªã³ã¯3.ãã¡ã€ã«ã·ã¹ãã ã®ã³ãŒãããŒãžããã®ã»ã¯ã·ã§ã³C-APIå€æãããã³ãã®éïŒ
docs.python.org/3/c-api/unicode.html?highlight=pyunicode#file-system-encoding
Boost.Pythonããã¥ã¡ã³ããžã®ãªã³ã¯ïŒ
www.boost.org/doc/libs/1_52_0/libs/python/doc