Ошибка SWIG [C ++ to Lisp (CFFI)] при компиляции оболочки

Я новичок с интерфейсом между C ++ и Lisp с SWIG. Я следил за документацией SWIG, но столкнулся с проблемой.
Вот простая программа, которую я хочу взаимодействовать (это легко сделать в Лиспе, но она должна понять, как импортировать код C ++ в Лисп):

test.cpp:

#include "test.hpp"int test(int x, int y) {
std::cout << x+y;
return 0;
}

test.hpp:

#include <iostream>
int test(int x, int y);

Чтобы использовать SWIG, я создаю файл интерфейса:

test.i:

%module test
%include <test.hpp>

И я выполняю следующую командную строку:

$ swig -c++ -cffi test.i
$ c++ -c test_wrap.cxx

Но при компиляции test_wrap.cxx терминал говорит:

test_wrap.cxx:193:19: error: use of undeclared identifier 'test'
result = (int)test(arg1,arg2);
^
1 error generated.

Кто-нибудь может мне помочь с этим?

4

Решение

Вот модифицированный test.i что заставляет остальное компилировать:

%module test
%{
#include "test.hpp"%}

%include <test.hpp>

Я последовал за эта презентация (стр. 24) и, видимо, вам нужно вставить include директива в сгенерированной обертке.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]