我有一个简单的python脚本,它使用带有ctypes
的c / c ++库。我的c ++库还包含一个main方法,因此我可以在没有-shared
标志的情况下编译它,它可以被驱动并且运行没有问题。
但是,当我使用ctypes
从python脚本运行相同的代码时,c ++程序的一部分已经完成(我可以通过cout
调用来判断)。然后是整个应用程序,包括python脚本,termiantes(我可以从缺少的cout
和print
调用中得知)。没有错误消息,没有segfault,没有python stacktrace。
我的问题是:我该如何调试?造成这种情况的可能原因是什么?
以下是代码的一部分,但由于没有错误消息,我不知道哪些代码是相关的。
import ctypes
interface = ctypes.CDLL("apprunner.so")
interface.start()
print "complete"
#include "../../app/ShaderApp.cpp"
#include <iostream>
#include "TestApp.cpp"
TestApp* app = 0;
extern "C" void start() {
app = new TestApp();
cout << "Running from library" << endl;
app->run();
}
int main( int argc, const char* argv[]) {
cout << "Running from excecutable" << endl;
start();
}
答案 0 :(得分:0)
通常,您从一个小型模型库开始,它只允许您测试来自python的函数调用。准备就绪后(所有调试打印都没问题),您可以继续。在你的例子中,注释掉#include“testapp.cpp”并获得打印到cout工作。