Swig, Python, C ++: TypeError: в методе 'Geodatabase_Open', аргумент 2 типа 'std :: string' - PullRequest
1 голос
/ 23 мая 2011

Я новичок в C ++ и SWIG. Это мой первый проект.

Я могу успешно собрать свое расширение Python, используя distutils. Однако, когда я пробую свой объект, я получаю эту ошибку.

Похоже, что существует проблема преобразования из-за получения строки python и преобразования ее в std :: string.

Я работаю в Windows 7, использую Visual Studio C ++ 2008 Express

Вот мой файл интерфейса swig

/* swig interface file */
%module Geodatabase 
%{
#include Geodatabase_helper.h
%}
namespace FileGeodatabase {
  class Geodatabase {
    public:
  Geodatabase();
  Geodatabase(std::string p);
  ~Geodatabase();
  void Open(std::string p);
  void Close();
   };
}

1 Ответ

4 голосов
/ 23 мая 2011

Согласно документации swig , для использования std::string требуется %include "std_string.i".

%module example
%include "std_string.i"

std::string foo();
void        bar(const std::string &x);
...