1. 程式人生 > >【ocx疑難雜癥0】淺談OCX開發註冊“逐用戶重定向”問題

【ocx疑難雜癥0】淺談OCX開發註冊“逐用戶重定向”問題

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開發註冊“逐用戶重定向”問題