Новичку chrome-разработчику плагинов нужна помощь в работе с NPAPI

#c #visual-studio-2008 #google-chrome-extension #compiler-errors #npapi

#c #visual-studio-2008 #google-chrome-extension #ошибки компилятора #npapi

Вопрос:

Хотя до этого я очень мало изучал C , я пытаюсь скомпилировать следующий плагин Chrome, чтобы увидеть, как он работает, и использовать его в качестве отправной точки для разработки чего-то подобного: http://code.google.com/p/minimizetotray/source/browse/trunk/?r=17#trunk/DLL

До сих пор я предпринял следующие шаги: загрузил исходный код, открыл его в MS Visual Studio Pro 2008 и получил несколько запрашиваемых SDK и заголовочных файлов, включая последнюю версию заголовков NPAPI: http://npapi-sdk.googlecode.com/svn/trunk/headers /

Теперь я получаю следующие ошибки при попытке компиляции и понятия не имею, как это отсортировать.

     Compiling...
JSMethods.cpp
c:documents and settingsdell customerdesktopdlljsmethods.cpp(92) : error C2039: 'UTF8length' : is not a member of '_NPString'
        c:program filesmicrosoft visual studio 9.0vcincludepluginnpruntime.h(85) : see declaration of '_NPString'
c:documents and settingsdell customerdesktopdlljsmethods.cpp(101) : error C2039: 'UTF8characters' : is not a member of '_NPString'
        c:program filesmicrosoft visual studio 9.0vcincludepluginnpruntime.h(85) : see declaration of '_NPString'
  

И т.д…

Помимо этих двух ошибок, все это кажется денди, он не запрашивает отсутствующие включения или что-то в этом роде. Любая помощь приветствуется!

Комментарии:

1. Какую версию XULRunner SDK вы используете?

2. вы также можете посмотреть firebreath.org вместо того, чтобы делать это вручную — намного проще, особенно для новичка (но многие продвинутые разработчики плагинов также используют его)

Ответ №1:

Если я не ошибаюсь в последнем SDK, структура _NPString определяется как…

 typedef char NPUTF8;
typedef struct _NPString {
    const NPUTF8 *UTF8Characters;
    uint32_t UTF8Length;
} NPString;
  

И в вашем коде вы вызываете UTF8length вместо UTF8Length (прописная буква L).

Комментарии:

1. Он компилируется, вау! Думаю, я мог бы разобраться с этим сам, если бы действительно попытался, хорошая работа, которую я публикую анонимно: -P Не знаю, почему созданная мной DLL в три раза больше распространяемой, но, похоже, она работает, огромное спасибо за вашу помощь!

2. Возможно, у вас есть параметр «Использовать MFC в статической библиотеке» … хорошее место для начала работы с NPAPI colonelpanic.net/2009/03/building-a-firefox-plugin-part-one

3. Это означает, что код также необходимо изменить, чтобы использовать UTF8Characters вместо UTF8characters: std::string ret = NPVARIANT_TO_STRING(locationValue). Символы UTF8;