Метод отладки класса Com - PullRequest
       22

Метод отладки класса Com

1 голос
/ 04 января 2012

Я занимаюсь разработкой COM-совместимых классов с использованием Visual Studio 2008. И использовать эти классы на Visual FoxPro 9.0 Когда я скомпилировал библиотеку классов, она регистрируется после компиляции.

В Visual FoxPro я создаю объект с этим фрагментом кода в окне команд:

newObj = CREATEOBJECT("CemT.Deneme.ClassTest")

Когда я хотел проверить библиотеку классов в Visual Studio, я не могу скомпилировать и снова зарегистрировать dll. Это дает мне эту ошибку:

Unable to copy file "obj\Debug\clCOMTest.dll" to "bin\Debug\clCOMTest.dll". The process cannot access the file 'bin\Debug\clCOMTest.dll' because it is being used by another process.

С этой ошибкой мне пришлось бы выйти из VFP и начать заново. Перед созданием объекта я компилирую библиотеку классов в Visual Studio. Тогда я могу использовать последнюю версию DLL.

Это выглядит очень нормально, потому что VFP использует dll, но есть ли способ сделать это без перезапуска VFP?

Ответы [ 4 ]

0 голосов
/ 14 января 2015

VFP не полностью освобождает COM-объекты из памяти, пока приложение не будет закрыто.

Использование команды RELEASE не освобождает ее полностью.

0 голосов
/ 04 января 2012

В VFP, вы пробовали

RELEASE LIBRARY {файл dll}

или, согласно документации, вы можете очистить ВСЕ библиотеки API с помощью

УСТАНОВИТЬ БИБЛИОТЕКУ

(без указания конкретного имени библиотеки), чтобы очистить их

0 голосов
/ 09 января 2012

Это довольно просто, если я правильно понимаю проблему, в VFP,

Release newObj

0 голосов
/ 04 января 2012

Назад, когда я делал подобные вещи (COM-компоненты C ++, предназначенные для использования с VB в качестве хоста), я использовал для настройки командной строки «Debug», чтобы открыть правильный проект в VB.

Другими словами, я запускал среду разработки VB в отладчике C ++.

Это было хорошо, потому что я все еще могу устанавливать точки останова в моей DLL и т. Д. И работать одновременно на сторонах VB и C ++. (Просто не забудьте нажать «Сохранить» в VB, прежде чем нажать «Стоп» в C ++!)

Я никогда не использовал FoxPro, но вы, вероятно, можете сделать то же самое с опцией -C:

http://msdn.microsoft.com/en-us/library/bzb50fbk(v=VS.71).aspx

...