Точки входа не повлияют на то, о чем вы говорите; скорее всего, вы не правильно отслеживаете экземпляры NPP или у вас есть что-то еще глобальное, чего не должно быть.
Основные точки входа не являются специфичными для экземпляра; если вы посмотрите на функции NPP_ *, все те, которые относятся к экземпляру, принимают «АЭС» в качестве первого параметра; как правило, вы будете держать указатель на какую-то структуру данных в поле pdata АЭС, и это то, что вы должны использовать, чтобы различать разные экземпляры. Если вы делаете это неправильно или если где-то еще вы храните глобальную или статическую переменную, которая должна быть специфичной для экземпляра, это может привести к проблеме, которую вы описываете.
Возможно, вы захотите рассмотреть возможность использования FireBreath или Nixysa; первый абстрагирует большую часть боли NPAPI и дает вам поддержку IE, а второй может сгенерировать скелет w/API для вас, чтобы вы заполнили другой код, и вы начинаете с того, что уже работает.
Дополнительная информация о том, как работает структура АЭС и как различия между разными экземплярами можно найти на http://npapi.com/tutorial2
я хранить указатель на экземпляр АЭС, когда NPP_New вызывается в глобальной структуре. Так что, когда я делаю вызовы функции NPN_, у меня будет указатель. – hapyfishrmn
хорошо, это право есть ваша проблема. У вас есть это в обратном направлении; вы не храните АЭС в любом месте, потому что это идентификатор экземпляра. В любом месте, где вам нужно вызвать функцию NPN_, должно быть что-то конкретное для экземпляра; Обычно я создаю класс и сохраняю указатель на него в АЭС, чтобы потом использовать его и хранить npp внутри этого класса. Убедитесь, что вы освободили класс в NPP_Destroy – taxilian
Я понимаю, что когда вы вызываете NPP_, вы можете посмотреть на экземпляр -> pdata. Когда у вас есть скриптовый объект (класс NPObject), я не вижу, как у вас есть указатель на экземпляр. Javascript вызывает Invoke(), и вы вызываете функции, которые используют NPN_, откуда вы получаете АЭС? – hapyfishrmn