1 nashge 2015-12-03 10:19:42 +08:00 |
![]() | 2 nooper 2015-12-03 10:26:49 +08:00 via iPad 如果项目不大你可以考虑原生的代码,或者用 cython 。 swig 也可以。注意锁 |
3 chinuno OP |
![]() | 4 nooper 2015-12-03 10:48:57 +08:00 互相调用只能用 boot,python 。或者纯 python C 的接口。 |
5 chinuno OP @nooper 把 boost 官方的文档看了一边。还是需要编译成 dll 。虽然要编译麻烦点是无所谓。但是能实现我的要求嘛? foo(){ ... bar(); ... } bar(){ ... exec(foo()); //在 python 中执行 foo() ... } 大概像这样 |
![]() | 6 nooper 2015-12-03 11:23:26 +08:00 via iPad ![]() 我写过原生的代码, boost 还真没研究内部调用的 |
![]() | 7 MCVector 2015-12-03 12:01:34 +08:00 ![]() 啊哈我之前正好写了一个,把 C++ 的接口暴露出来给 python 调用。 python 跑在一个独立线程上,可以是 python shell 也可以是脚本(比如说 python 写的 GUI )之类。基本上是在这个类里实现的,如果不嫌弃的话可以看看。 https://github.com/v3c70r/GL4Framework/blob/master/pyConsole.h https://github.com/v3c70r/GL4Framework/blob/master/pyConsole.cpp |
![]() | 8 MCVector 2015-12-03 12:13:53 +08:00 瞎了没看下面的需求,没有试过行不行。。。 |
9 messycode 2015-12-03 12:46:55 +08:00 用 c 包裹一层, 然后用 cffi |
10 chinuno OP @MCVector 之前一直没看官方的 C API ,就想着用 boost.python 。看了你的代码后自己实现的一下成功了。非常感谢! |
![]() | 11 MCVector 2015-12-03 14:40:31 +08:00 棒! |
![]() | 12 defage 2015-12-03 20:20:50 +08:00 swig 以前是这么用的, c++的方法会封装出来给 py 调用。不过貌似这种方法好过时了 |
13 oscarzhao 2015-12-04 13:12:00 +08:00 via Android https://github.com/Oscarzhao/vsprogram/tree/master/BoostPython , boost Python 是最强大的一个,除了单例模式下的回调,其它情况应该都没问题 |
![]() | 14 congeec 2015-12-13 08:47:44 +08:00 这个应该是你想要的 https://github.com/wjakob/pybind11 |