Swig, Python, C : ошибка типа: в методе ‘База геоданных_открыта’, аргумент 2 типа ‘std::string’

#c #python #swig

#c #python #swig

Вопрос:

Я новичок в 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:

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

 %module example
%include "std_string.i"

std::string foo();
void        bar(const std::string amp;x);