【ocx疑難雜癥0】淺談OCX開發註冊“逐用戶重定向”問題
阿新 • • 發佈:2018-05-18
ocx 逐用戶重定向 最近按公司要求封裝一個OCX,本來很簡單的一件事卻遇到一個很奇怪的問題。
在編譯器vs2010編譯後註冊報“逐用戶重定向”
當時在莫度的帶領下差點全軍覆滅,提到2點解決方案(狗比膏藥--坑的一逼)
1.改工程屬性從DLL為lib
變成
這種方案雖然編譯器是過去了但是regsvr32註冊沒一點反應。
2.改鏈接器配置
這個更狠,編譯器都過不了。
以上為爬坑分割線,下面來點幹貨
當時調用其它的DLL動態庫,還有OCX事件又是合作開發,沒辦法先縮小問題範圍
把事件刪了-----外甥打燈籠--照舊
把工程分割開 ---- 本人的沒問題(當時高興的有一種要甩鍵盤的沖動)
合作開發一個team不能拉下弟兄不管,就幫弟兄逐步縮減範圍。。。。
直到我們註釋了一個調DLL的函數(靜態方式調用,及.h+lib)發現
成了。。。。真成了
解決方案1:
OCX工程中靜態調用DLL的接口,且參數是函數指針 既有可能是這個原因
解決方案2:
後面需要在OCX用到多線程,但多線程__stdcall方式來進行資源管理的,而在多線程方法裏需要用到OCX事件,
當時腦袋一熱不就是new個OCX的XXCtrl對象,然後對象.事件解決。(too young too simple)
JS崩潰了,JS崩潰了,JS真的無情的崩潰了(此處有n!+1個F**K)
開動小腦筋,多線程方法裏不能NEW,設一個全局變量不就OK了
然後遇到了多年未見的老朋友(“註冊失敗 逐用戶重定向”),雖然才1天沒見,但見到不希望見到的總感覺
快過了一輩子。
OCX工程代碼重新new控制類對象 既有可能是這個原因
解決辦法是:老子刪了多線程代碼,投入while大法的懷抱(此處有壞笑大笑)
【ocx疑難雜癥0】淺談OCX開發註冊“逐用戶重定向”問題