<string> 按引用返回向量

Return vector<string> by reference

本文关键字:向量 返回 引用 gt lt string      更新时间:2023-10-16

我有一个接收字符串向量的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 "......InclCSCHSwig.h"
%}
%include <std_string.i>
%include <std_vector.i>
%include "typemaps.i"

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

%include "......InclCSCHSwig.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文件中添加一些东西来让它工作

我找到问题了。我使用MS Visual Studio 2008,设置是不同的项目。在Project Properties> General> Use of MFC set:

在共享DLL中使用MFC