小编Toc*_*ocs的帖子

来自SWIG PyObject_Call Segfault的Python回调

我有一个wx.py.Shell.shell小部件,它允许用户执行与我的程序交互的python代码.我希望能够将用户在此空间中定义的函数传递给我的C++代码(通过wxswig生成的自定义小部件包装器)并执行它.

在我的C++代码中,我使用std :: function <>类来调用绑定函数(C++或Python)

所以我创建了一个简单的类来用函数调用操作符包装PyObject.但是当我尝试调用PyObject*时,我得到了一个段错误.

class PyMenuCallback
{
    PyObject *Func;
public:
    PyMenuCallback(const PyMenuCallback &op2);
    PyMenuCallback(PyObject *func);
    ~PyMenuCallback ();

    void operator() (int id);
};
/////////////////////////////////////////////////////////
PyMenuCallback::PyMenuCallback(PyObject *func)
    : Func(func)
{
    Py_XINCREF (Func);
    if(!PyCallable_Check(Func))
        cout << "Not a Callable Callback." << endl; //Throw an exception or something
}

PyMenuCallback::PyMenuCallback(const PyMenuCallback &op2)
    : Func (op2.Func)
{
    Py_XINCREF (Func);
    if(!PyCallable_Check(Func))
        cout << "Not a Callable Callback." << endl;
}

PyMenuCallback::~PyMenuCallback()
{
    Py_XDECREF (Func);
}

void PyMenuCallback::operator() (int id)
{
    cout << "Calling Callback" …
Run Code Online (Sandbox Code Playgroud)

c++ python swig wxpython python-c-api

9
推荐指数
1
解决办法
2164
查看次数

为 iOS 5.0 编译/链接 FreeImage

我最近决定尝试在 iOS 设备上运行我的一些图形代码,但我使用 FreeImage 加载纹理。因此,我需要为 iOS 5.0 构建它。

当我尝试使用 FreeImage 库时,我目前收到链接错误。链接错误都与标准 C++ 库相关。例如...

Undefined symbols for architecture i386:
  "std::basic_string<char, std::char_traits<char>, std::allocator<char>>::~basic_string()", referenced from:
  _FreeImage_GetMetadata in libfreeimage-iphonesimulator.a(BitmapAccess.o-i386)
  _FreeImage_SetMetadata in libfreeimage-iphonesimulator.a(BitmapAccess.o-i386)
  _FreeImage_CloneMetadata in libfreeimage-iphonesimulator.a(BitmapAccess.o-i386)
  _FreeImage_Clone in libfreeimage-iphonesimulator.a(BitmapAccess.o-i386)
  std::pair<std::string const, FITAG*>::~pair() in libfreeimage-iphonesimulator.a(BitmapAccess.o-i386)
  Load(FreeImageIO*, void*, int, int, void*) in libfreeimage-iphonesimulator.a(PluginEXR.o-i386)
  C_OStream::write(char const*, int) in libfreeimage-iphonesimulator.a(PluginEXR.o-i386)
  ...
Run Code Online (Sandbox Code Playgroud)

不幸的是,为 iOS 构建 FreeImage 提供的 makefile 有点过时,所以我被迫更新它。此外,在我的 XCode 项目中,我将编译器切换为支持 C++11 功能并使用 libc++(如此处所述,我可以在 Xcode 中使用 C++11 吗?

所以我试图在 FreeImage 的 makefile 中反映这些更改,但我仍然收到这些错误。

我的 makefile 看起来像这样(我发现这篇文章有点帮助http://sourceforge.net/p/freeimage/discussion/36110/thread/51445acc …

c++ makefile freeimage ios5 c++11

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

标签 统计

c++ ×2

c++11 ×1

freeimage ×1

ios5 ×1

makefile ×1

python ×1

python-c-api ×1

swig ×1

wxpython ×1