我有一个接收字符串向量的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文件中添加一些内容才能使用。
答案 0 :(得分:0)
我发现了问题。我使用MS Visual Studio 2008,设置是不同的项目。在项目属性&gt;一般&GT;使用MFC集:
在共享DLL中使用MFC