Я пытаюсь создать расширение Firefox, использующее IDL. Тем не менее, сборка умирает с этой ошибкой:XPIDL (typelib.py) type not found error
[apply] Executing 'python' with arguments:
[apply] 'C:\Users\Dad\Documents\Sage\xulrunner-sdk/sdk/bin/typelib.py'
[apply] '-I'
[apply] 'C:\Users\Dad\Documents\Sage\xulrunner-sdk/idl/'
[apply] '-o'
[apply] 'C:\Users\Dad\Documents\Sage\build\xpi\components\sageIFeedParserListener.xpt'
[apply] 'C:\Users\Dad\Documents\Sage\src\components\sageIFeedParserListener.idl'
[apply]
[apply] Traceback (most recent call last):
[...]
[apply] File "C:\Users\Dad\Documents\Sage\xulrunner-sdk\sdk\bin\xpidl.py", line 959, in resolve
[apply] self.realtype = method.iface.idl.getName(self.type, self.location)
[apply] File "C:\Users\Dad\Documents\Sage\xulrunner-sdk\sdk\bin\xpidl.py", line 271, in getName
[apply] raise IDLError("type '%s' not found" % id, location)
[apply] xpidl.IDLError: error: type 'PRInt64' not found, sageIFeedItemEnclosure.idl line 44:32
[apply] void init(in AString link, in PRInt64 length, in AString mimeType);
Я использую последнюю версию выпуска XulRunner-SDK (20), который я установил, просто распаковка в папку; Я не верю, что мне нужно сделать что-нибудь еще, но, возможно, я ошибаюсь в этом? У меня Python 2.7.3. Пути в вызове typelib.py кажутся правильными. Сам файл IDL прост и выглядит следующим образом:
#include "nsISupports.idl"
[scriptable, uuid(73C6ECE6-0D9F-474C-8959-3979D2D1CBDB)]
interface sageIFeedItemEnclosure: nsISupports {
void init(in AString link, in PRInt64 length, in AString mimeType);
}
И я могу видеть, что PRInt64 определяется в nsISupportsPrimitives.idl. Тем не менее, я получаю ту же ошибку, даже если я конкретно включаю этот файл в файл IDL, который я пытаюсь скомпилировать, поэтому я подозреваю, что это еще одна проблема.
Любые идеи?
Что произойдет, если вы измените 'PRInt64' на' int64_t'? – paa
int64_t работает. Так что это говорит нам? –
Смотрите мой ответ и принимайте его, если вы не возражаете :) – paa