小编sim*_*mon的帖子

如何使用boost.python中的-fPIC编译静态库

默认情况下,libboostpython.a编译时没有-fPIC.但是我必须创建一个python扩展,它是一个动态库,带有-fPIC静态库的链接.如何libboostpython.a-fPICfrom 编译静态库()boost.python

c c++ python boost boost-python

14
推荐指数
1
解决办法
6660
查看次数

无法在具有无限循环的 boost.python 模块中通过 Ctrl-c 终止进程

我制作了一个带有无限循环的 boost.python 模块。但是我无法通过 ctrl-c 终止该进程。以下是一个示例。

C++

#include <boost/python.hpp>
#include <boost/python.module.hpp>
#include <boost/python.def.hpp>
#include <iostream>
usring namespace boost::python;

void foo() {
   int it=0;
   while (true) {                     //endless loop
       ++it;
       std::cout<< it <<std::endl;
       sleep(3);
   }
}

BOOST_PYTHON_MODULE(ctopy)
{
    def("foo",foo);
}
Run Code Online (Sandbox Code Playgroud)

Python:

import ctopy
ctopy.foo()
Run Code Online (Sandbox Code Playgroud)

结果:

1
2
3
4
.....................
Run Code Online (Sandbox Code Playgroud)

我无法通过 Ctrl-c 杀死前台进程。为什么模块不接受 Ctrl-c 发送的信号“SIGINT”。如何使其工作。

c++ python boost-python

4
推荐指数
1
解决办法
825
查看次数

python:从内存导入模块

可能重复:
如何从内存加载已编译的python模块?

我在内存中有一些python文件,可能是StringIO.I如何导入存储在内存中的模块文件.我不想将其保存到磁盘然后加载.

它看起来像:

import StringIO.StrngIO([buf]) 
Run Code Online (Sandbox Code Playgroud)

python

4
推荐指数
1
解决办法
4291
查看次数

用win7-64bit中的mingw编译一些带有boost.python的代码

我决定让我的程序与windows环境兼容.但我在windows上的编程经验很少.有些错误需要帮助.

环境:

  • os:win7-64bit,
  • ide:codeblocks12.11,
  • python:Python 2.7.3 Windows X86-64安装程序(Windows AMD64/Intel 64/X86-64二进制文件[1] - 不包含源代码)
  • 编译器:mingw来自codeblocks安装包.
  • 提升:boost1.52

我只复制并测试来自".\ boost_1_52_0\libs\python\example\tutorial"的这个"hello"代码

码:

#include <iostream>
#include <boost/python/module.hpp>
#include <boost/python/def.hpp>

char const* greet()
{ return "hello, world"; }

BOOST_PYTHON_MODULE(hello_ext)
{
    using namespace boost::python;
    def("greet", greet);
}

using namespace std;
int main()
{
    cout << "Hello world!" << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误信息:

mingw32-g++.exe -Wall -fexceptions  -g  -ID:\boost\include\boost-1_52 -IC:\Python27\include  -c E:\project\snail-MW\test1\main.cpp -o obj\Debug\main.o
mingw32-g++.exe -LD:\boost\lib\ -LC:\Python27\libs  -o bin\Debug\test1.exe obj\Debug\main.o  
obj\Debug\main.o: In function `inithello_ext':
E:/project/snail-MW/test1/main.cpp:11: undefined reference to `boost::python::detail::init_module(char …
Run Code Online (Sandbox Code Playgroud)

c++ python boost mingw boost-python

2
推荐指数
1
解决办法
2862
查看次数

如何通过boost.python或python/c api调用python字节码文件

我有一些python字节码文件为"a.pyc","b.pyc".我想用c ++代码运行这个文件.代码可以调用boost.python或python/c api.PyEval_EvalCode?

PyObject* PyEval_EvalCode(PyCodeObject *co, PyObject *globals, PyObject *locals)
Run Code Online (Sandbox Code Playgroud)

但是如何从字节码文件中获取PyCodeObject.

c c++ python boost-python

2
推荐指数
1
解决办法
1005
查看次数

根据字符串定义变量

如何根据字符串定义变量.我已经定义了很多类.但是我想根据一些字符串创建这个类的变量.

代码看起来像这样.

class AA {};
class BB {};
class CC {
    CC(void *pt);
    virtual ~CC();
};
......

void test(char *ss,void *pt=NULL) {
    //??????How to do?

}

int main() {
    a1=test("AA");    //a1=new AA();
    a2=test("AA");    //a2=new AA();
    b1=test("BB");    //b1=new BB();
    c1=test("CC",pt); //c1=new CC(pt);
}
Run Code Online (Sandbox Code Playgroud)

另外,您可以将其视为URL和句柄函数.std :: map是根据string获取类实例的常用方法.但是无法为变量创建新实例.我希望根据字符串获取一个新实例.

c++

0
推荐指数
1
解决办法
154
查看次数

标签 统计

c++ ×5

python ×5

boost-python ×4

boost ×2

c ×2

mingw ×1