Я следил за учебным пособием по объединению C с TCL с использованием Swig. Учебник, казалось, работал правильно, но в конце я столкнулся с ошибкой, которую не могу решить. Ситуация следующая:
Я следил за учебником: http://www.swig.org/tutorial.html.
У меня есть файл с именем test.c:
char *HelloWorld()
{
return "hello world";
}
и еще один с именем test.i:
%module test
%{
/* Put header files here or function declarations like below */
extern char *HelloWorld();
%}
extern char *HelloWorld();
Затем я использовал следующие аргументы командной строки для подготовки правильных файлов:
gcc -c test.c -o test.o
swig -tcl test.i
gcc -c test_wrap.c -o test_wrap.o
gcc -dynamiclib -framework Tcl test.o test_wrap.o -o test.so
И, наконец, я попытался загрузить его, используя:
tclsh
% load test.so test
Это тот момент, когда я получил следующую ошибку:
dlsym(0x100600090, Test_Unload): symbol not founddlsym(0x100600090, Test_SafeUnload): symbol not found
Насколько я знаю, я не отклонялся от учебника. Может ли кто-нибудь сказать мне, как я получил эту ошибку и, что более важно, как избавиться от нее?
Заранее спасибо!