Swig std :: vector С ++ к R терпит неудачу - PullRequest
0 голосов
/ 02 апреля 2020

Я использую Swig 3.0.8 под Ubuntu 16.04 (g ++ 5.4), и следующий минимальный пример дает сбой:

TestStrVe c .h

#include <iostream>
void display_str(std::vector<std::string> vec)
{
  for(auto str: vec)
    std::cout << str << std::endl;
}

teststrve c. я

%module rteststrvec

%include <std_string.i>
%include <std_vector.i>
%template(VectorString) std::vector<std::string>;
%include TestStrVec.h
%{
  #include "TestStrVec.h"
%}

я глотаю / компилирую вот так (csh)

swig -c++ -r -o teststrvec_wrap.cpp teststrvec.i
g++ -std=c++11 -fpic -shared teststrvec_wrap.cpp -I/usr/share/R/include -L. -o rteststrvec.so
setenv LD_LIBRARY_PATH .

Затем я тестирую в R

source("rteststrvec.R")
dyn.load("rteststrvec.so")
display_str(c("a", "b", "c")) # ERROR: SEGV in swig::asptr

Тот же пример замена std :: string на double везде работает отлично. Не могли бы вы помочь решить проблему?

1 Ответ

0 голосов
/ 21 апреля 2020

Хорошее обновление по этому вопросу: Swig 4.0.1 в настоящее время устраняет проблему!

...