2008-08-02 9 views
31

Часть моей повседневной работы поддерживает и расширяет старые приложения VB6. Общий движок написан на C/C++, а VB6 использует эти функции для повышения производительности.Выгрузите COM-управление при работе в VB6 IDE

Когда речь заходит о асинхронном программировании, интерфейса C недостаточно, и мы полагаемся на элементы управления COM для запуска событий на VB6.

Моя проблема заключается в том, что, когда я регистрирую элемент управления в VB6, VB загружает этот элемент управления в память и не выгружает его до тех пор, пока я не выйду из VB6 IDE. Поскольку элемент управления загружается все время, я не могу перекомпилировать его в VC6, потому что файл DLL заблокирован.

Решение, которое я нашел, это не включить управление в VB, а использовать CreateObject() с полным именем моего элемента управления. Проблема в том, что я должен объявить свой контроль как объект, потому что VB6 ничего не знает об интерфейсе, который я использую, и у меня нет доступа к IntelliSense, что является болью.

Любая идея, как я могу сказать, что VB6 выгружает элементы управления после выхода из приложения или непосредственно в среде IDE?

ответ

27

Я уверен, что нет хорошего способа заставить VB6 выгрузить управление.

Вот что я делаю ... вместо запуска Visual C и Visual Basic бок о бок, запустите VB6 под VC:

  1. нагрузки до VC
  2. Откройте проект, содержащий ваш COM объекты
  3. Edit, изменение и т.д.
  4. в VC, установите выход исполняемой программу VB6.EXE с соответствующими аргументами командной строки для загрузки VB6 рабочего пространства
  5. Теперь просто нажмите F5 для запуска VB6 IDE и загрузки вашего проекта VB6
  6. Если вы хотите снова изменить код COM, выйдите из VB6.EXE, внесите изменения и снова нажмите F5. Пока вы сохраняете свое рабочее пространство, VB6 будет помнить, какие окна у вас были открыты и все ваши настройки проекта.

Преимущества этого метода:

  • Вы можете установить точки останова в объекте COM и отладить его, используя полный исходный отладчик
  • Вы можете счастливо отладки в C и VB одновременно
  • Всякий раз, когда работает VB6, всегда имеется последняя версия COM-библиотек
+1

Это очень умно, я постараюсь это сделать. Теперь я задаюсь вопросом, может ли моя старая учетная запись на основе cookie быть объединена с моей новой учетной записью на основе OpenId, поэтому я могу отметить этот ответ как ответ ... – 2008-09-10 11:21:39

 Смежные вопросы

  • Нет связанных вопросов^_^