Существует библиотека С++, и мне нужно вызвать вызовы функций в эту библиотеку из JavaScript, запущенных в браузере на стороне клиента, библиотека находится только на клиентской машине. Как загрузить библиотеку и получить доступ к интерфейсам (функциям), предоставляемым библиотекой С++? Библиотека содержит главным образом алгоритмы и вызовы рендеринга.
Мне нужно вызвать функцию С++ из javascript. Возможно ли это или нет?
Ответ 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 об интерфейсе.