calling int main() from python



我有一个适用于C++代码的python包装器(如这里所建议的那样,从python调用C/C++?)使用ctypes。但问题出在代码的主要功能上。当我做类似的事情时

         extern "C" {
             void call_main(){ main();}
         }

在我的c++代码中,然后通过python包装调用此函数

            ...
            lib = cdll.lib('./mylib.so')
            def run():
                lib.call_main()

->我有"分段错误"。

有趣的是,当我将我的主要方法代码复制粘贴到名为e.test的函数中时(所以它是c++代码中的int test(){…#pasted code…}),将其外部化,然后调用lib.test()

=>一切都很好。。。因此,主函数被称为main或的东西一定是个问题

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

只需将要调用的代码放入另一个函数中并调用即可。

相关内容

  • 没有找到相关文章