Что такое SWIG и для чего он используется - PullRequest
1 голос
/ 16 июня 2010

Я просто в Интернете, Google использует swig.

Кто-нибудь использовал это и скажет мне, будет ли это полезно для меня.

Я имею в виду, почему это используется и как этоможет сделать мою работу хорошей.

Поскольку Google использует это, должно быть хорошо

Ответы [ 2 ]

2 голосов
/ 17 июня 2010

SWIG генерирует «клейкий код», необходимый, когда программе, написанной на одном языке, необходимо вызвать программу, написанную на другом. SWIG предполагает, что C / C ++ является своего рода наименьшим общим знаменателем, и если вы хотите соединить, скажем, Python и Java, вам придется передавать всю информацию через C. SWIG очень амбициозен и охватывает большое количество языки сценариев, в основном обеспечивающие импорт / экспорт в C или C ++.

То, как вы используете SWIG, зависит от языка сценариев, но общая идея всегда одна и та же: вы описываете некоторый заголовочный файл C / C ++, а SWIG генерирует связующий код, необходимый для использования этого заголовочного файла, из вашего любимого языка сценариев. Соединение двух языков сценариев вместе не подходит для общего случая использования, и я был бы удивлен, если бы у вас не было проблем. Хорошим планом будет обмен только неизменяемыми данными между двумя языками. Даже тогда я приготовлю сюрпризы.

Резюме: SWIG достаточно хорошо работает для того, для чего он предназначен, то есть для экспорта библиотек C / C ++ в огромное множество языков сценариев & mdash; но по одному на время. Наличие двух разных языков сценариев, работающих в одном образе процесса, может оказаться сложнее, чем вы ожидаете.

2 голосов
/ 16 июня 2010

То, что кто-то что-то использует, не делает его хорошим. Это, как говорится, я люблю мой Swig.

Я использовал его, чтобы обернуть библиотеки C ++ в Java и Python. Это позволяет мне писать код один раз и по-прежнему использовать этот код на других языках. Он переводит API значимым и последовательным образом, что нельзя недооценивать. Короче говоря, это облегчает жизнь тем из нас, кому приходится работать на нескольких языках с несколькими библиотеками одновременно.

...