关于如何使用SWIG为python编写c包装器的疑问 上下文
我有一个用c实现的函数,我想在python环境中测试它。读了几遍之后,我决定使用SWIG工具。A刚才做了一个简单的例子,但我仍然有很多疑问,所以我决定来这里。c项目有以下文件关于如何使用SWIG为python编写c包装器的疑问 上下文,python,c,swig,python-c-api,Python,C,Swig,Python C Api,我有一个用c实现的函数,我想在python环境中测试它。读了几遍之后,我决定使用SWIG工具。A刚才做了一个简单的例子,但我仍然有很多疑问,所以我决定来这里。c项目有以下文件 ransac2Dline.h ransac2Dline.c svd.h svd.c 我想用的功能是 int ransac_2Dline(float **data, int n, int maxT, float threshold, float *bestModel, int *b
- ransac2Dline.h
- ransac2Dline.c
- svd.h
- svd.c
int ransac_2Dline(float **data, int n, int maxT, float threshold,
float *bestModel, int *bestInliers, int verbose);
它与其他辅助函数一起在头文件ransac2Dline.h中声明。标题内容为
#ifndef RANSAC2DLINE_H
#define RANSAC2DLINE_H
#include <time.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "svd.hpp"
int ransac_2Dline(float **data, int n, int maxT, float threshold,
float *bestModel, int *bestInliers, int verbose);
int randomSelect(float **sel, int nsel, float **data, int *ndata);
int fitModel_line(float *point, float *l, float threshold);
void estimateModel_line(float *l, float **P, int n);
void twoPointsLine(float *l, float **P);
#endif /* RANSAC2DLINE_H */
。是这样吗?或者我应该做些不同的事情
ii)由ransac_2Dline函数计算的最重要的数据它不是由它返回的(返回的int值只是函数成功完成其任务的一个指标),而是通过点*bestModel在外部范围内变为可用。SWIG可以通过这种方法创建一个在python环境中模拟的接口吗
iii)这种方法是一种好的解决方案,还是应该使用ctypes或其他方法
更多信息
我正在使用Ubuntu14.04.5LTS,使用g++编译器和PythonVesion2.7.6
我将非常感谢任何帮助或提示(这个主题对我来说有点难,因为我是一个机械工程师,有一个与机器人一起工作的愚蠢想法:) 使用gcc
(而不是g++
)。
还可以使用swig-python ransac2dline.i
(但不使用-c++
选项)
/* File: ransac.i */
%module ransac
%{
#define SWIG_FILE_WITH_INIT
#include "ransac2Dline.h"
%}
int ransac_2Dline(float **data, int n, int maxT, float threshold,
float *bestModel, int *bestInliers, int verbose);