Я пишу проект в VB6. Я использую бит Win7-32 и имею проблему с проектом. Этот проект написал много лет назад, и теперь я перекомпиляю это. Когда я выдаю команду Make xxx.exe, VB6 запускает компиляцию и зависает, а также создает более 10 000 * .tmp файлов, после минут закрывает IDE и ничего не делает. Где моя ошибка?VB6 зависает при создании exe-файла
ответ
У меня (удивительно) была аналогичная проблема с этим раньше.
Лучшим решением является внесение изменений в настройки вашего проекта.
Щелкните правой кнопкой мыши свой проект и выберите «Свойства». На вкладке «Компиляция» перейдите к Расширенные оптимизации. Отключение «Предположим, что нет слияния», вероятно, лучше всего. Однако, если эта кнопка отключена, попробуйте переключиться с P-кода на собственный код.
Если изменение выше не работает, и вы еще не были в P-коде, попробуйте P-Code.
Наконец, если вы действительно хотите придерживаться собственного кода, попробуйте выбрать «Нет оптимизации».
Если все по-прежнему не работает, просто выполните настройки и снимите флажки с различными оптимизациями.
Если у вас все еще есть проблема, попробуйте открыть каждую форму и другой файл в своем проекте и посмотреть, не является ли конкретный файл просто поврежденным, что может привести к внезапному завершению. По крайней мере, таким образом вы можете проследить его до файла.
Если после всего этого не удается, попробуйте скомпилировать его в другой операционной системе, но я действительно сомневаюсь, что он дойдет до этого.
Удачи вам!
Лично у меня были всевозможные проблемы с VB6 IDE в Windows XP и более поздних версиях.
Я держу виртуальную машину под управлением Windows 2000 и выполняю любую работу VB6.
У меня с этим несколько проблем. Если есть какая-то странность, я просто возвращаю VM в базовую установку.
Я пробовал каждый из предложений PhoeniX_2. Ни один из них не работал. Я не знаю, что заставило меня попробовать это, но в последний раз, когда я скомпилировал, я создал новое имя exe-файла, чем используемое во время моей предыдущей версии. К счастью, это сработало. Я не понимаю, почему. Это не проблема разрешения или проблема с заблокированным файлом. Я думал, что это могло быть потому, что новый компилятор перезаписывает exe-файл предыдущего компилятора. Компьютер был перезагружен несколько раз в течение 2-дневного периода устранения неполадок.
Так что если ни одна из предложений Phoenix не подходит для вас, попробуйте выполнить компиляцию нового имени exe-файла, кроме созданного с помощью предыдущего компилятора.
Я нашел причину для нас. У нас были пользовательские элементы управления, которые пытаются подключиться к базе данных во время события Initialize. Это очень плохая идея, потому что это событие запускается во время компиляции, а также во время загрузки IDE. Он долгое время пытался подключиться к базе данных, которая не существовала, а затем разбила процесс компиляции, чтобы не было произведено Exe (хотя не было видимого знака).
Решение состояло в том, чтобы выполнить соединение db и другой код запуска в общедоступном методе, вызванном из формы Load event. Кажется, нет надежного способа использования Initialise.
То, что работало с моей проблемой при замораживании VB6 при компиляции большого исполняемого проекта, заключалось в том, чтобы ограничить ядра процессора приложения VB только одним ядром (то есть маской аффинности, установленной на 1 для процесса VB6).
Обратите внимание, что это работает для меня только в том случае, если процесс VB6 начинается с маски аффинности, установленной на 1, а не только путем применения маски аффинности (в диспетчере задач) после запуска процесса VB. Для запуска VB6 с аффинной маски установлен в 1, используйте следующую комбинацию (для 64 & 32 битной ОС соответственно) и запустить его с правами администратора:
C: \ Windows \ System32 \ cmd.exe/C начать «VisualBasic6 "/ D" C: \ Program Files (x86) \ Microsoft Visual Studio \ VB98 "/ AFFINITY 1" C: \ Program Files (x86) \ Microsoft Visual Studio \ VB98 \ VB6.EXE "
C: \ Windows \ System32 \ cmd.exe/C запустить "VisualBasic6"/D "C: \ Program Files \ Microsoft Visual Studio \ VB98"/AFFINITY 1 "C: \ Program Files \ Microsoft Visual Studio \ VB98 \ VB6.EXE"
Если это не сработает, попробуйте сделать проект вне VB6 IDE используя вышеупомянутый метод. Например, предположим, что вам нужно создать проект с именем testproj.vbp в пути C: \ MyProjects \ TestProj, используйте следующую команду (для 64 и 32-разрядных ОС соответственно) в командной строке повышенного значения:
Запустите «VisualBasic6»,/C: \ Program Files (x86) \ Microsoft Visual Studio \ VB98 "/ AFFINITY 1" C: \ testproj.vbp "/ outdir" C: \ MyProjects \ TestProj "
запуск" VisualBasic6 "/ D" C: \ Program Files \ Microsoft Visual Studio \ VB98 "/ AFFINITY 1" C: \ Program Files \ Microsoft Visual Studio \ VB98 \ VB6.EXE "/ make" C: \ MyProjects \ TestProj \ testproj.vbp "/ outdir" C: \ MyProjects \ TestProj "
К сожалению, VB6 не дает указания на то, что компиляция завершена, поэтому вам нужно отслеживать процесс VB6 в диспетчере задач (когда компиляция завершится, процесс VB6 просто завершится).
Как раз для вашей справки, я запускаю VB на Windows Server 2012 с двумя четырехъядерными процессорами Intel Xeon.
Спасибо за ответ. Я обнаружил, что некоторые * .dsr-файлы (конструкторы отчетов) вызывают проблему, я просто удалил их из своего проекта, а затем собрал и сделал. –