我已經對Mozilla(6.0.2)代碼中的nsMediaStream.h/cpp進行了一些修改,其中一個要求我從中獲取ASCII字符串Mozilla框架用於表示和解析URI的nsIURI類。人們可能會認爲,似乎很容易。 Mozilla文檔(https://developer.mozilla.org/en/nsIURI)告訴我可以使用屬性asciiSpec來獲取這樣的字符串。 nsACString的文檔非常混亂,但這是另一回事。nsIURI沒有會員'asciiSpec','asciiHost'等錯誤
當事情南下是,當我嘗試使用使用nsMediaStream的nsIURI可變穆裏
mURI->asciiSpec
我從MSVC編譯器以下錯誤:
[..]/content/media/nsMediaStream.cpp(146) :
error C2039: 'asciiSpec' : is not a member of 'nsIURI'
[..]\obj-i686-pc-mingw32\dist\include\nsIURI.h(83) : see declaration of 'nsIURI'
當我看引用的nsIURI.h文件,它是從接口IDL文件生成的,我看到以下內容:http://google-web-toolkit.googlecode.com/svn/plugin-sdks/gecko-sdks/gecko-1.9.0/include/nsIURI.h
據我可以告訴說heade r文件與Mozilla代碼中使用的nsIURI完全沒有任何關係,似乎更多的是接口/原型而不是實際的類。文檔中列出的屬性和方法都不存在。 MSVC似乎同意我這一點。
我覺得我在這裏錯過了一些很大的東西,但是即使在Mozilla源文件中花費了幾個月的時間並保留了構建系統,我似乎無法弄清楚這一點,至今我也沒有其他人提出過這個問題。任何線索將不勝感激:)
真棒,我希望Mozilla的文檔是這個清楚:)也許這個答案會爲Mozilla維基添加一個很好的?無論如何,非常感謝您的幫助,Wladimir :) – MayaPosch
@MayaPosch:本文似乎給出了一個很好的概述:https://developer.mozilla.org/en/Creating_XPCOM_Components/An_Overview_of_XPCOM。但是 - 是的,它並沒有解釋從IDL文件到C++頭文件的轉換過程是如何工作的(特別是方法名稱大寫和替換屬性)。 –
謝謝你的鏈接。回顧一下我之前嘗試使用它的方法,我實際上已經接近您發佈的示例,只是我不知道要使用哪種字符串類型。 nsACString顯然不能使用。 (返回)類型的IDL在最好的時候並不十分清楚,說實話:) – MayaPosch