从python调用int main()

时间:2012-03-08 10:23:36

标签: c++ python ctypes main

我有一个用于C ++代码的工作python包装器(如Calling C/C++ from python?所示 )使用ctypes。但问题在于代码的主要功能。当我做

之类的事情
         extern "C" {
             void call_main(){ main();}
         }

在我的c ++代码中,然后通过python wrapper

调用此函数
            ...
            lib = cdll.lib('./mylib.so')
            def run():
                lib.call_main()

- >我得到“分段错误”。

有趣的是,当我将我的主要方法代码粘贴到称为例如test(所以它是c ++代码中的int test(){.... #gressed code}},extern它然后调用lib.test()

=>并且eveything工作正常......所以它必须是主函数被称为main或者

的问题

1 个答案:

答案 0 :(得分:2)

在C ++中,不允许递归调用main()(参见3.6.1,basic.start.main,第3段)。此外,当您要调用C ++功能时,需要一个C ++感知入口点。你有时可以在没有这个的情况下放弃调用C ++功能,但是什么是可行的,什么不是不完全是直截了当的。显而易见的问题是需要初始化的全局对象。

只需将您要调用的代码放入其他函数并调用它即可。