#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;