Подтвердить что ты не робот

Мне нужно вызвать функцию С++ из javascript. Возможно ли это или нет?

Существует библиотека С++, и мне нужно вызвать вызовы функций в эту библиотеку из JavaScript, запущенных в браузере на стороне клиента, библиотека находится только на клиентской машине. Как загрузить библиотеку и получить доступ к интерфейсам (функциям), предоставляемым библиотекой С++? Библиотека содержит главным образом алгоритмы и вызовы рендеринга.

4b9b3361

Ответ 1

Несколько вариантов, о которых я могу думать:

1) Найдите в JavaScript другую библиотеку.

2) Переместите код С++ на JavaScript. Как легко это зависит от насколько сложным является код С++ или насколько он вам нужен.

3) Оберните код С++ в веб-службу на сервере и вызовите его с помощью AJAX. Я лично не знаком с любыми фреймворками веб-сервисов С++, но при этом вы можете создать Java, Python или . NET привязки для библиотеки (или просто для той части, которую вы необходимость) или привязки на другом языке. Затем вы будете писать свой веб-сервис на любом языке, который вы выбрали.

3B) Альтернатива # 3 - Если библиотека имеет интерфейс командной строки или существует программа командной строки, которая использует библиотеку, ваш веб-сервис может вызвать это, и вам не нужно будет писать язык связывание. Однако обратите внимание, что с этой опцией следует учитывать проблемы с производительностью и безопасностью.

4) Если у вас есть исходный код С++ для библиотеки, вы можете попробовать скомпилировать библиотеку с помощью JavaScript Emscripten.

Я бы, наверное, попробовал их в этом порядке. Я мог бы попробовать # 3, потому что это может быть самым сложным.

Кроме того, если вы делаете # 3 или # 3B, вы должны быть уверены, что использование библиотеки в потоковом режиме.

Отказ от ответственности: я никогда не пробовал ни одного из них, кроме # 3B.

Ответ 2

Вам лучше создать оболочку C для библиотеки С++ и вызвать ее из Javascript.

С++, как известно, сложно связать с языковым стандартом, не имеющим жесткого определения ABI. C не имеет этого ограничения. По этой причине "C" оказывается лингва-франкой, когда вы хотите, чтобы два языка программирования разговаривали друг с другом.

Ответ 3

Обычно браузеры не позволяют этого, потому что это очень небезопасно. Вы можете скомпилировать С++ в asm.js и использовать его как библиотеку JavaScript.

В качестве альтернативы вы можете создать расширение браузера, которое будет запускаться или вызывать требуемый код.

Ответ 4

Да, это возможно, но прежде чем вы сможете называть их из javascript. Вы делаете это, создавая файл интерфейса, чтобы сообщить javascript об интерфейсе.