Можете ли вы поделиться журналами задач индексирования ?
согласно: https://groups.google.com/forum/#!topic/druid-user/yZEnAk0iKr4 и https://groups.google.com/forum/#!topic/druid-user/ZBTU08VNp2o это может быть нехватка памяти в менеджере среднего звена
У Вас есть неправильное понимание. Различием между основным и WinMain, кроме некоторого differet кода инициализации, являются параметры, переданные ему.
основные взгляды как это:
int main(int argc, char* argv[]);
В то время как WinMain похож на это:
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
);
Что-то должно установить те параметры и выполнить вызов, и это - код запуска. Когда Вы компилируете и связываете программу, один из параметров компоновщика является точкой входа, и это будет, в зависимости от консоли или приложения для GUI, другого бита кода запуска.
Можно, конечно, написать собственный код запуска, просто войти исходный каталог Visual C++, и можно найти код запуска, он назвал crt0.c, и это находится в каталоге VC\crt\src.
Это работает другой путь. Существует статически файл связанного объекта, который идет с компилятором, который содержит фактическую точку входа. Та точка входа делает инициализацию и затем называет Вашу точку входа (т.е. WinMain).
То, что та статическая часть ожидает называть, может быть tweakable. Например, в Visual Studio существует поле для имени точки входа в настройках компоновщика.
С Просто основным, Вы не можете кодировать Winmain. Для выравниваний Следующие утверждения были взяты из http://blogs.msdn.com/oldnewthing/archive/2007/12/03/6644060.aspx
[В Windows Programming], Почему точку входа приложения не назвали основной? Ну, с одной стороны, основное имя было уже взято, и Windows не имел полномочий для резервирования альтернативного определения. Тогда не было никакого комитета по стандартизации языка C; C был тем, что Dennis сказал, что это было, и едва гарантировалось, что Dennis сделает любые специальные шаги для сохранения совместимости исходного кода Windows в любой будущей версии языка C. Так как K&R не указывал, что реализации могли расширить приемлемые формы основной функции, было совершенно возможно, что был легальный компилятор C, который отклонил программы который объявленный основным неправильно. Текущий стандарт языка C явно разрешает определенные для реализации альтернативные определения для основного, но требующий, чтобы все компиляторы поддерживали эту новую определенную для Windows версию, для компиляции Windows-программ, бесплатно ограничил бы набор компиляторов, которые Вы могли использовать для записи Windows-программ.
Если бы Вам удалось преодолеть то препятствие, то у Вас была бы проблема, что версия Windows основного должна будет быть чем-то вроде этого:
int main(int argc, char *argv[], HINSTANCE hinst, HINSTANCE hinstPrev, int nCmdShow);
Из-за пути C связь был выполнен, все изменения функции должны были договориться о параметрах, которые они имели общего. Это означает, что версия Windows должна была бы добавить свои параметры на конец самой долгой существующей версии основного, и затем необходимо будет скрестить пальцы и надеяться, что язык C никогда не добавлял другую альтернативную версию основного. Если Вы пошли этим путем, Ваши скрещенные пальцы привели Вас к сбою, потому что оказывается, что третий параметр был добавлен к основному некоторое время спустя, и это конфликтовало с Вашей благоприятной для Windows версией.
Предположим, что Вам удалось убедить Dennis не признавать что версия с тремя параметрами основного. Все еще необходимо придумать те первые два параметра, что означает, что код запуска каждой программы должен содержать синтаксический анализатор командной строки. Назад в 16-разрядные дни, люди урезали для сохранения каждого байта. Сообщение их, "О, и все Ваши программы будут на 2 КБ больше", вероятно, не сделало бы Вас большим количеством друзей. Я имею в виду, это - четыре сектора ввода-вывода от гибкого диска!
Но вероятно причина, почему точке входа Windows дали другое имя, состоит в том, чтобы подчеркнуть, что это - другая среда выполнения. Если бы это назвали основным, то люди взяли бы программы C, разработанные для консольной среды, бросили бы их в их компилятор Windows и затем выполнили бы их с катастрофическими результатами.
Надежда это очищает Ваши сомнения.