2013-09-11 3 views
2

Я пишу проект в VB6. Я использую бит Win7-32 ​​и имею проблему с проектом. Этот проект написал много лет назад, и теперь я перекомпиляю это. Когда я выдаю команду Make xxx.exe, VB6 запускает компиляцию и зависает, а также создает более 10 000 * .tmp файлов, после минут закрывает IDE и ничего не делает. Где моя ошибка?VB6 зависает при создании exe-файла

ответ

2

У меня (удивительно) была аналогичная проблема с этим раньше.

Лучшим решением является внесение изменений в настройки вашего проекта.

Щелкните правой кнопкой мыши свой проект и выберите «Свойства». На вкладке «Компиляция» перейдите к Расширенные оптимизации. Отключение «Предположим, что нет слияния», вероятно, лучше всего. Однако, если эта кнопка отключена, попробуйте переключиться с P-кода на собственный код.

Если изменение выше не работает, и вы еще не были в P-коде, попробуйте P-Code.

Наконец, если вы действительно хотите придерживаться собственного кода, попробуйте выбрать «Нет оптимизации».

Если все по-прежнему не работает, просто выполните настройки и снимите флажки с различными оптимизациями.

Если у вас все еще есть проблема, попробуйте открыть каждую форму и другой файл в своем проекте и посмотреть, не является ли конкретный файл просто поврежденным, что может привести к внезапному завершению. По крайней мере, таким образом вы можете проследить его до файла.

Если после всего этого не удается, попробуйте скомпилировать его в другой операционной системе, но я действительно сомневаюсь, что он дойдет до этого.

Удачи вам!

+0

Спасибо за ответ. Я обнаружил, что некоторые * .dsr-файлы (конструкторы отчетов) вызывают проблему, я просто удалил их из своего проекта, а затем собрал и сделал. –

0

Лично у меня были всевозможные проблемы с VB6 IDE в Windows XP и более поздних версиях.

Я держу виртуальную машину под управлением Windows 2000 и выполняю любую работу VB6.

У меня с этим несколько проблем. Если есть какая-то странность, я просто возвращаю VM в базовую установку.

2

Я пробовал каждый из предложений PhoeniX_2. Ни один из них не работал. Я не знаю, что заставило меня попробовать это, но в последний раз, когда я скомпилировал, я создал новое имя exe-файла, чем используемое во время моей предыдущей версии. К счастью, это сработало. Я не понимаю, почему. Это не проблема разрешения или проблема с заблокированным файлом. Я думал, что это могло быть потому, что новый компилятор перезаписывает exe-файл предыдущего компилятора. Компьютер был перезагружен несколько раз в течение 2-дневного периода устранения неполадок.

Так что если ни одна из предложений Phoenix не подходит для вас, попробуйте выполнить компиляцию нового имени exe-файла, кроме созданного с помощью предыдущего компилятора.

0

Я нашел причину для нас. У нас были пользовательские элементы управления, которые пытаются подключиться к базе данных во время события Initialize. Это очень плохая идея, потому что это событие запускается во время компиляции, а также во время загрузки IDE. Он долгое время пытался подключиться к базе данных, которая не существовала, а затем разбила процесс компиляции, чтобы не было произведено Exe (хотя не было видимого знака).

Решение состояло в том, чтобы выполнить соединение db и другой код запуска в общедоступном методе, вызванном из формы Load event. Кажется, нет надежного способа использования Initialise.

3

То, что работало с моей проблемой при замораживании 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.

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

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