使用SWIG的C++类

2024-09-29 21:56:36 发布

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

<>我尝试用C++代码创建一个Python接口(带有SWIG)。用下面的代码。当我删除线路时:

aClass z = aClass(1);

从.cpp文件中,我得到以下错误:

^{pr2}$

我做错什么了?在

测试库.cpp

#include <iostream>
#include <string.h>
using namespace std;

class aClass {
    public:
        aClass(int i) {
            iD = i;
        }
        void printiD() {
            cout << iD << endl;
        }
    private:
        int iD;
};

void doSomething(string s) {
    cout << "testlib: I did something with:" << s << endl;
}

void outprintiD(aClass ff) {
    ff.printiD();
}
string returnSomething(string s) {
    return s;
}
//Don't know why, but without the next line it doesn't work. :(
aClass z = aClass(1);

testlib.i

%module testlib
%include "std_string.i"
using namespace std;
%{
    class aClass {
public:
    aClass(int i);
    void printiD();
private:
    int iD;
};
void outprintiD(aClass ff);
void doSomething(std::string s);
std::string returnSomething(std::string s);
%}
class aClass {
public:
    aClass(int i) ;
    void printiD();
private:
    int iD;
};
void outprintiD(aClass ff);
void doSomething(std::string s);
std::string returnSomething(std::string s);

测试.py

#!/usr/bin/python
import testlib

testlib.doSomething("doS");
var = testlib.returnSomething("rSo");
print var

aClassInstance = testlib.aClass(42)
testlib.outprintiD(aClassInstance)

print "done..."

执行脚本

swig -c++ -python $1.i
g++ -c -fPIC $1.cpp $1_wrap.cxx -I/usr/include/python2.7
g++ -shared $1.o $1_wrap.o -o _$1.so

Tags: idstringincludecppclassintstdff
1条回答
网友
1楼 · 发布于 2024-09-29 21:56:36
vines@Aspire-5755G:~$ c++filt _ZN6aClassC1Ei
aClass::aClass(int)

这是一个链接器错误。尝试:

^{pr2}$

即交换目标文件。{{cd2}的顺序是合理的,因为这些方法是合理的。在

相关问题 更多 >

    热门问题