通过引用</string>返回向量<string>

时间:2014-06-03 13:12:45

标签: python c++ swig

我有一个接收字符串向量的SWIG类 - vector<string>(CSCHSwig),这个类使用了一个。 LIB另一个项目,通过引用返回另一个字符串向量。

CSCHSwig.cpp

#include CSCHSwig.h
vector < string> CSCHSwig::CSwig(vector < string> a_InputArgs){

    vector < string> a_OutputArgs;
    int resposta = ClassLib->SendRequest(a_InputArgs, a_OutputArgs);

    return a_OutputArgs
}

CSCHSwig.h

#include < string>
#include < vector> 
using namespace std;

class CSCHSwig { public:
    CSCHSwig();
    virtual ~CSCHSwig();
    vector <string> CSwig(const vector < string> a_InputArgs);
}

CSCHSwig.i

/* File : CSCHSwig.i */

%module CSCHSwig

%{
#include "..\..\..\Incl\CSCHSwig.h"
%}

%include <std_string.i>
%include <std_vector.i>
%include "typemaps.i"


namespace std {
    %template(a_OutpuArgs) vector < string>; 
}


%include "..\..\..\Incl\CSCHSwig.h"

ClassLib的一个例子: ClassLib.cpp

int ClassLib::SendRequest(const vector < string>& a_InputArgs, vector < string>& a_OutputArgs, {
    vector < string> Vector;

    Vector.push_back("pReturnStatus");
    Vector.push_back("1");

    a_OutputArgs = Vector;

    return 1;
}

ClassLib.h

class ClassLib
{
public:
    int SendRequest(const vector < string>&  a_InputArgs, vector < string>& a_OutputArgs);
}

我已经测试了SWIG类并且它运行正常,我从python中调用CSwig方法传递一个字符串列表。问题是当CSwig方法调用方法SendRequest ClassLib时。 int resposta = ClassLib->SendRequest(a_InputArgs, a_OutputArgs);

执行终止,不返回任何错误。当我在方法中处理a_OutputArgs参数并返回一个字符串数组时,我发生了“错误”的测试。也许我需要在.i文件中添加一些内容才能使用。

1 个答案:

答案 0 :(得分:0)

我发现了问题。我使用MS Visual Studio 2008,设置是不同的项目。在项目属性&gt;一般&GT;使用MFC集:

在共享DLL中使用MFC