最近Boss要求將如今osgGIS效果嵌入到網頁實現,折騰了一週多,終於搞定。
先說下本身的環境:系統爲Window10,osg版本爲3.4,qt版本爲5.9,vs2017編譯工程爲64位。html
以前看了網上好多好多博文,總體過程大同小異,但那些文章都有一個共同特色,年代較久遠,大部分開發的仍是32位的軟件,利用vs+qt嵌入網頁應該沒有什麼問題。但如今本身開發的所有是64位程序,相較前輩們的技術路線,也有很大不一樣。windows
固然,整體思路仍然是:OSG嵌入QT,QT嵌入網頁,這樣便實現OSG與網頁(IE內核)的結合。瀏覽器
利用VS+QT構建Activex工程沒必要詳述,先上一張貼圖:安全
一直選擇默認,就能構建出一個總體的ActiveQT框架。
注意這裏的:框架
的第一行ID號,就在 html文檔中的[Objet]對象的值。spa
osg與QT的結合能夠查看OSG官方給出的例子 osgviewerQT。
(代碼已經上傳GitHub)插件
作出來64位ActiveQT控件以後,直接用ie打開多半不會加載成功。打開ie瀏覽器默認的是直接打開32位的(可經過window的資源管理器,找到iexplore--打開文件位置確認),即便選擇64位通常狀況下也不會成功,這也是本身卡克的地方。線程
引自網上一段話 "IE 瀏覽器在同時打開多個選項卡後,Windows 會同時運行多個不一樣的 IEXPLORE.EXE 進程,這個現象並不是是不正常的故障,而是 IE 瀏覽器在 IE 8 及後續的版本中引入的「鬆散耦合進程框架(Loosely Coupled IE)」進程管理技術。此技術容許 IE 瀏覽器將主窗口與選項卡用不一樣的、分離的 IEXPLORE.EXE 進程隔開。若是一個選項卡遇到了問題須要關閉,能夠避免連帶影響整個 IE 瀏覽器主窗口及其它選項卡。這樣有助於提高 IE 瀏覽器的穩定性與安全性。"3d
也就是說,當作出html後,即便選擇用64的ie打開,也會至少啓動兩個線程,查看方式:打開一個ie網頁,選擇 「任務管理器」選擇 「ie轉到詳細信息」,如圖:(通常狀況下會看到兩個進程,一個是打開的64位,另外一個是默認打開的32的ie進程)
server
如今,咱們要作的就是設置IE單進程64位啓動啓動,方法有二:
運行gpedit.msc組策略管理器。在「計算機配置—》管理模板—》windows組件—》Internet Explore」中打開「選項卡進程增加」,設置爲已啓用,選項卡進程增加爲0。應用以後IE就進入單進程模式。這時候使用C:Program FilesInternet Explore目錄下的iexplore.exe(該目錄下IE爲64-bit),去打開調用64位控件的html文件,就能成功的調用64位控件了。
若是上述方法失敗,則可(百度經驗)https://jingyan.baidu.com/art...
最後效果: