В продолжение к вопросуперечислений не получает передается TCL, когда мы имеем SWIG TCL Статическая линковка
how to pass enum values from TCL script to C++ class using Swig
Я следующий код
1) Файл: example.i
%module example
%{
/* Put header files here or function declarations like below */
#include "example.h"
%}
%include "example.h"
2 Файл example.h
class myClass {
public:
enum Type {one,two};
myClass() {}
static bool printVal(int val);
static bool printEnum(Type val);
};
3) example.cpp Файл
#include "example.h"
#include <iostream>
using namespace std;
bool myClass::printVal(int val) {
cout << " Int Val = " << val << endl;
return 0;
}
bool myClass::printEnum(type val) {
cout << " Enum Val = " << val << endl;
return 0;
}
Если я связать Swig файлы в виде разделяемой библиотеки она работает отлично
swig -c++ -tcl example.i
g++ -c -fpic example_wrap.cxx example.cpp -I/usr/local/include
g++ -shared example.o example_wrap.o -o example.so
setenv LD_LIBRARY_PATH /pathtoexample.so:$LD_LIBRARY_PATH
tclsh
% load example.so
% myClass_printVal $myClass_one
Но если код Swig и пример. * Файлы скомпонованы статически я получаю следующее сообщение об ошибке
Глядя вперед для руководства/помощь
Как именно они связаны? –