Могу ли я встроить перейти в свой проект C / C ++, используя динамическое связывание? - PullRequest
0 голосов
/ 08 декабря 2018

Возьмем в качестве примера python: программа на C / C ++ может динамически загружать libpython.so и создавать виртуальную машину python, а затем передавать пользовательские сценарии на виртуальную машину python.

Это способ их использования?А именно, динамически загружать его из системной среды пользователя.

Мы хотим встроить в наш проект сценарии, но не хотим упаковать его в нашу окончательную двоичную программу.

Спасибо.

1 Ответ

0 голосов
/ 08 декабря 2018

На некоторых платформах, таких как Linux, вы можете собрать свой код Go с помощью -buildmode=c-shared, чтобы получить общую библиотеку, которую затем можно связать с программой, написанной на другом языке, например C.

Некоторые примеры и документация приведены здесь.: https://github.com/vladimirvivien/go-cshared-examples

Обратите внимание, что это не делает Go языком сценариев - вам все равно нужно создавать разделяемые библиотеки из кода Go.Однако вы можете создать их во время работы приложения и загрузить их, используя dlopen() и dlsym().Это так же, как вы могли бы скомпилировать код C, запустив компилятор C из своего приложения, а затем загрузить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...