您好,登錄后才能下訂單哦!
最近按公司要求封裝一個OCX,本來很簡單的一件事卻遇到一個很奇怪的問題。
在編譯器vs2010編譯后注冊報“逐用戶重定向”
當時在莫度的帶領下差點全軍覆滅,提到2點解決方案(狗比膏藥--坑的一逼)
1.改工程屬性從DLL為lib
變成
這種方案雖然編譯器是過去了但是regsvr32注冊沒一點反應。
2.改鏈接器配置
這個更狠,編譯器都過不了。
以上為爬坑分割線,下面來點干貨
當時調用其它的DLL動態庫,還有OCX事件又是合作開發,沒辦法先縮小問題范圍
把事件刪了-----外甥打燈籠--照舊
把工程分割開 ---- 本人的沒問題(當時高興的有一種要甩鍵盤的沖動)
合作開發一個team不能拉下弟兄不管,就幫弟兄逐步縮減范圍。。。。
直到我們注釋了一個調DLL的函數(靜態方式調用,及.h+lib)發現
成了。。。。真成了
OCX工程中靜態調用DLL的接口,且參數是函數指針 既有可能是這個原因
后面需要在OCX用到多線程,但多線程__stdcall方式來進行資源管理的,而在多線程方法里需要用到OCX事件,
當時腦袋一熱不就是new個OCX的XXCtrl對象,然后對象.事件解決。(too young too simple)
JS崩潰了,JS崩潰了,JS真的無情的崩潰了(此處有n!+1個F**K)
開動小腦筋,多線程方法里不能NEW,設一個全局變量不就OK了
然后遇到了多年未見的老朋友(“注冊失敗 逐用戶重定向”),雖然才1天沒見,但見到不希望見到的總感覺
快過了一輩子。
OCX工程代碼重新new控制類對象 既有可能是這個原因
解決辦法是:老子刪了多線程代碼,投入while大法的懷抱(此處有壞笑大笑)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。