Я новичок с интерфейсом между 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.
Кто-нибудь может мне помочь с этим?
Вот модифицированный test.i
что заставляет остальное компилировать:
%module test
%{
#include "test.hpp"%}
%include <test.hpp>
Я последовал за эта презентация (стр. 24) и, видимо, вам нужно вставить include
директива в сгенерированной обертке.
Других решений пока нет …