如何为IronPython访问包装C ++代码

2024-05-20 18:43:47 发布

您现在位置:Python中文网/ 问答频道 /正文

<>我有一个简单的例子,我想从IrPython访问(我来自“正则/ Sye' Python”),所以我正在艰难地将我的C++代码导入到IrPython中。通常我只使用SWIG,包装我的代码,导入并继续我的快乐之路

但是由于Ironpython是C而不是基于C的,这使得这个过程更加困难

如何为ironpython包装这个类 (我还为这个例子附上了我的swig文件,但这可能没有用)

#include "minimal.h"


double average(std::vector<int> v) {
    return std::accumulate(v.begin(), v.end(), 0.0) / v.size();
}

std::vector<double> half(const std::vector<double>& v) {
    std::vector<double> w(v);
    for (unsigned int i = 0; i<w.size(); i++)
        w[i] /= 2.0;
    return w;
}

void halve_in_place(std::vector<double>& v) {
    std::transform(v.begin(), v.end(), v.begin(),
        std::bind2nd(std::divides<double>(), 2.0));
}

用头文件

^{pr2}$

我有一个最低限度的swig文件。但我意识到有很多问题,发出一个swig.exe文件-c++-python“%(FullPath)”,并让ironpython在导入时实际接受它。在

%module transfervector
%{
#include "minimal.h"
%}

%include "std_vector.i"
// Instantiate templates used by example
namespace std {
   %template(IntVector) vector<int>;
   %template(DoubleVector) vector<double>;
}

// Include the header file with above prototypes
%include "minimal.h"

Tags: 文件代码returninclude例子swigintend
1条回答
网友
1楼 · 发布于 2024-05-20 18:43:47

swigpython行不通——它生成CPython扩展,而IronPython不支持这些扩展。在

<>你最终需要包装C++,以便从.NET访问。我认为您可以使用SWIG生成C#包装器,然后将其导入到IronPython中。否则,您可能可以用C++/CLI编译器编译,直接生成.NET程序集,也可以从IrPython中使用。在

相关问题 更多 >