溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

【ocx疑難雜癥0】淺談OCX開(kāi)發(fā)注冊(cè)“逐用戶重定向”問(wèn)題

發(fā)布時(shí)間:2020-07-21 21:29:12 來(lái)源:網(wǎng)絡(luò) 閱讀:570 作者:忘記江南 欄目:編程語(yǔ)言

最近按公司要求封裝一個(gè)OCX,本來(lái)很簡(jiǎn)單的一件事卻遇到一個(gè)很奇怪的問(wèn)題。

在編譯器vs2010編譯后注冊(cè)報(bào)“逐用戶重定向”

當(dāng)時(shí)在莫度的帶領(lǐng)下差點(diǎn)全軍覆滅,提到2點(diǎn)解決方案(狗比膏藥--坑的一逼)

1.改工程屬性從DLL為lib

【ocx疑難雜癥0】淺談OCX開(kāi)發(fā)注冊(cè)“逐用戶重定向”問(wèn)題

變成
【ocx疑難雜癥0】淺談OCX開(kāi)發(fā)注冊(cè)“逐用戶重定向”問(wèn)題
這種方案雖然編譯器是過(guò)去了但是regsvr32注冊(cè)沒(méi)一點(diǎn)反應(yīng)。

2.改鏈接器配置

【ocx疑難雜癥0】淺談OCX開(kāi)發(fā)注冊(cè)“逐用戶重定向”問(wèn)題

這個(gè)更狠,編譯器都過(guò)不了。


以上為爬坑分割線,下面來(lái)點(diǎn)干貨


當(dāng)時(shí)調(diào)用其它的DLL動(dòng)態(tài)庫(kù),還有OCX事件又是合作開(kāi)發(fā),沒(méi)辦法先縮小問(wèn)題范圍

把事件刪了-----外甥打燈籠--照舊

把工程分割開(kāi) ---- 本人的沒(méi)問(wèn)題(當(dāng)時(shí)高興的有一種要甩鍵盤(pán)的沖動(dòng))

合作開(kāi)發(fā)一個(gè)team不能拉下弟兄不管,就幫弟兄逐步縮減范圍。。。。

直到我們注釋了一個(gè)調(diào)DLL的函數(shù)(靜態(tài)方式調(diào)用,及.h+lib)發(fā)現(xiàn)

成了。。。。真成了

解決方案1:

OCX工程中靜態(tài)調(diào)用DLL的接口,且參數(shù)是函數(shù)指針 既有可能是這個(gè)原因

【ocx疑難雜癥0】淺談OCX開(kāi)發(fā)注冊(cè)“逐用戶重定向”問(wèn)題

解決方案2:

后面需要在OCX用到多線程,但多線程__stdcall方式來(lái)進(jìn)行資源管理的,而在多線程方法里需要用到OCX事件,

當(dāng)時(shí)腦袋一熱不就是new個(gè)OCX的XXCtrl對(duì)象,然后對(duì)象.事件解決。(too young too simple)

JS崩潰了,JS崩潰了,JS真的無(wú)情的崩潰了(此處有n!+1個(gè)F**K)

開(kāi)動(dòng)小腦筋,多線程方法里不能NEW,設(shè)一個(gè)全局變量不就OK了

然后遇到了多年未見(jiàn)的老朋友(“注冊(cè)失敗 逐用戶重定向”),雖然才1天沒(méi)見(jiàn),但見(jiàn)到不希望見(jiàn)到的總感覺(jué)

快過(guò)了一輩子。

OCX工程代碼重新new控制類對(duì)象 既有可能是這個(gè)原因

解決辦法是:老子刪了多線程代碼,投入while大法的懷抱(此處有壞笑大笑)

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI