2008-08-02 41 views
31

我日常工作的一部分是維護和擴展傳統的VB6應用程序。一個通用引擎是用C/C++編寫的,VB6使用這些函數來提高性能。在VB6 IDE中工作時卸載COM控件

當談到異步編程時,C接口是不夠的,我們依靠COM控件來觸發事件到VB6。

我的問題是,當我在VB6中註冊控件時,VB會將此控件加載到內存中,並且不會卸載它,直到我退出VB6 IDE。由於控件一直加載,我無法在VC6中重新編譯它,因爲DLL文件被鎖定。

我找到的解決方案不是在VB中啓用控件,而是使用CreateObject()和我的控件的全名。問題在於我必須將控件聲明爲對象,因爲VB6對我使用的接口一無所知,而且我無法訪問智能感知,這很痛苦。

任何想法如何告訴VB6在退出應用程序或直接在IDE中卸載控件?

回答

27

我很確定有沒有好方法強制VB6卸載控件。

這就是我做...而不是下 VC運行的Visual C和Visual Basic並排側,運行VB6

  1. 加載了VC
  2. 打開包含您的COM項目對象
  3. 編輯,改變等
  4. 在VC中,設置輸出可執行是VB6.EXE與適當的命令行參數來加載工作區VB6
  5. 現在剛打F5啓動VB6 IDE並加載您的VB6項目
  6. 如果要再次更改COM代碼,請退出VB6.EXE,進行更改並再次按F5。只要你保存你的工作空間,VB6會記住你打開的窗口和你的所有項目設置。這種方法的

優點:

  • 可以在COM對象設置斷點,它使用全源調試器
  • 可以在C和VB的同時愉快地調試的調試
  • 每當VB6運行它總是有最新版本的COM DLL
+1

這是非常聰明的,我會盡力做到這一點。 現在我不知道我的舊的基於cookie的帳戶是否可以與我的新的基於OpenId的帳戶合併,因此我可以將此答案標記爲答案... – 2008-09-10 11:21:39