网站建设 服务器,外链推广平台,昆明网站建设案例,cms网站开发需要学什么我正在用C编写一个ode解算器#xff0c;导出到一个WindowsDLL和一个DLL的Python包装器。我非常习惯Python#xff0c;但我对C和ctypes也是一个完全的初学者。在受公认答案here启发的修改后的解决方案如下所示#xff1a;C代码/* my_clib.c */#include #include #include str…我正在用C编写一个ode解算器导出到一个WindowsDLL和一个DLL的Python包装器。我非常习惯Python但我对C和ctypes也是一个完全的初学者。在受公认答案here启发的修改后的解决方案如下所示C代码/* my_clib.c */#include #include #include struct data {int nr_steps;double dt;double* t;double* x;double t0, x0;};double fun_to_integrate(double t, double y){return (y - t);}double rk4(double t, double y, double dt){double k1 dt * fun_to_integrate(t, y),k2 dt * fun_to_integrate(t dt / 2, y k1 / 2),k3 dt * fun_to_integrate(t dt / 2, y k2 / 2),k4 dt * fun_to_integrate(t dt, y k3);return y (k1 2 * k2 2 * k3 k4) / 6;}__declspec(dllexport) void my_fun(struct data* pointer){int i;double dt;dt pointer-dt;pointer-t[0] pointer-t0;pointer-x[0] pointer-x0;for(i 1; i pointer-nr_steps; i){pointer-t[i] dt*i pointer-t0;pointer-x[i] rk4(pointer-t[i-1], pointer-x[i-1], dt);}}使用相应的Python文件^{pr2}$在Windows 8上使用MinGW用gcc -o -c my_clib.o my_clib.cgcc -o rk4.dll -shared my_clib.o编译。在一切运行良好在最后一行solver.func()之后时间数据和解决方案数据存储在data.t和data.x。现在我需要从指针访问计算的数据。似乎不能直接做。如果你做type(data.x)你得到但如果你试图访问type(data.x[i])你会得到一个标准double。在{cmd}每一次{cds}都会使文件崩溃。不过我认为x_python [data.x[i] for x i in range(*number_of_elements*)]可以工作但是如果数组很长则速度非常慢。在我的问题是访问C-solver计算的数据的正确/最佳方式是什么在另外如果这不是将数组从C传递到Python的最佳方法那么还有什么其他方法适合这种应用程序一、 对于每一个时间步或者可能在到达最后一个时间之后将解决方案(t, x)(元组或两个数组)从C传递到Python在