語境
做一個C包裝爲Python我有在C,我想在Python環境來測試實現的功能。讀了一些之後,我決定使用SWIG工具。剛做了一個簡單的例子here,但我仍然懷疑,所以我決定來這裏。的C項目具有以下文件疑惑如何使用痛飲
- 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 */
。
問題
I)我想知道我究竟應該定義痛飲模塊.I。因爲我只想要一個接口ransac_2Dline函數我猜SWIG模塊需要處理它。我的意思是這樣的
/* 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);
。這是正確的嗎?或者我應該做一些不同的事情?
II)由ransac_2Dline功能它不是由它(返回int值只是在完成任務的功能成功與否的指標),但返回計算的最導入數據它是在原來可用外點範圍由* bestModel。 SWIG可以創建一個接口來在python環境中模擬這種方法嗎?
iii)這種方法是一個很好的解決方案,還是應該使用ctypes或其他方法?
更多的相關信息
我正在與一個Ubuntu 14.04.5 LTS工作,使用克++編譯器和蟒vesion 2.7.6。
我真的很感激任何幫助或提示(這個問題對我來說有點困難,因爲我是一個機械工程師,對機器人有着愚蠢的想法:))。