【发布时间】:2012-03-08 10:23:35
【问题描述】:
我有一个适用于 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()
-> 我得到“分段错误”。
有趣的是,当我将我的主要方法代码复制粘贴到名为例如的函数中时测试(所以它是 c++ 代码中的 int test() {....#pasted code...}),extern 它然后调用 lib.test()
=> 一切都很好......所以它一定是主函数被称为 main 或其他东西的问题
【问题讨论】:
-
听起来你的 C 编译器以一种特殊的方式处理 main 函数。
-
我相信在 c 中递归调用 main() 是(/是?)允许的,但在 c++ 中不允许,所以编译器可能被允许用它做一些特殊的事情。