Я пытаюсь использовать SWIG для создания оболочек для некоторых моих вызовов функций C++.SWIG TCL Static Linking
Кроме того, я пытаюсь создать собственную оболочку TCL, поэтому мне нужно статически связывать созданные SWIG-библиотеки. У меня есть собственная основная функция с вызовом Tcl_AppInit
, где я делаю предварительную настройку.
Чтобы сделать это, какую функцию я должен включить в вызов моей программы Tcl_AppInit
? Я обнаружил, что SWIG_init
не является правильной функцией. Я даже попробовал Cell_Init
, где cell - это имя класса в моем коде, но это тоже не помогает.
Как статические ссылки Объектные файлы SWIG с моей собственной основной функцией и Tcl_Appinit
звоните?
В настоящее время, когда я использую следующую команду, чтобы связать свою executabel я получаю следующее сообщение об ошибке:
g++ -o bin/icde src/core/*.o src/read/*.o src/swig/*.o src/icde/*.o -ltk -ltcl
Я получаю следующее сообщение об ошибке:
src/icde/main.o: In function `AppInit(Tcl_Interp*)':
main.cpp:(.text+0xa9): undefined reference to `Cell_Init(Tcl_Interp*)'
collect2: ld returned 1 exit status
Я проверил ГКЗ/Swig/ячейку. o, который имеет функцию Cell_Init или не использует objdump:
~> objdump -d src/swig/cell.o | grep Cell_Init
00006461 <Cell_Init>:
646c: 75 0a jne 6478 <Cell_Init+0x17>
Я не уверен, если я я делаю что-то неправильно во время соединения.
------------------- ОБНОВЛЕНИЕ -------------------------- -
Я обнаружил, что включение файла swig/swig.cxx непосредственно в основной файл, вызывающий функцию Tcl_AppInit, устраняет проблему связывания. Для этого есть причина.
Невозможно ли создать и отдельно связать файл swig с файлом с основной функцией?
В ответ на ваше обновление это возможно, но у вас есть один из самых простых методов. :-) –