Другие языки программирования и технологии

VisualC++ 2010. При выборе MFC - статической библиотеки программа не компилируется.

Ставлю библиотеку MFC как статическую и программа не компилируется, если делать что бы использовало библиотеки Windows тогда компилируется. Что делать?
Начиная с версии 3.0, все классы MFC, «поточно-ориентированным» и требуют многопоточные библиотеки времени выполнения для успешной связи. Попробуйте использовать однопоточной библиотеки времени выполнения, так как они предполагают эти библиотеки необходимые для включения приложения для работы в Win32s многих людей. Это не так. MFC версии 3.0 или более поздней версии будет использовать единый поток до тех пор, пока вы не создаете дополнительных потоков в приложении, приложение будет выполняться под Win32s.
Для Win32s MFC версии 3.0 и более поздних версий не следует создавать дополнительные потоки. Тем не менее MFC использует хранилища локального потока (TLS) в многопоточной библиотеки для предоставления данных отдельных процессов в DLL, которые используются несколькими приложениями, в группе Win32s.
В диалоговом окнеПроект настройкидиалоговое окно, если выбран вариант библиотеки времени выполнения для связи «Многопоточные с использованием библиотеки DLL» можно воспользоваться с помощью общей библиотеки DLL, MSVCRTX :0. Библиотека (гдеX :представляет основной номер версии Visual C++). Существуют разные версии MSVCRTX :0. Библиотека DLL для Windows NT и Win32s, которые не могут быть взаимозаменяемыми. «Многопоточные с использованием библиотеки DLL» является обязательным при создании AFXDLL.
Компоновка многопоточной библиотеки может привести к несколько ошибок с определенным символом. Обычно это происходит, когда приложение использует созданные пользователем или сторонние статических библиотек, которые были созданы в одном потоке.
Оптимальным решением в данном случае является повторное построение статических библиотек для использования в качестве MFC (те же параметры библиотеки/MT-или-/MDиспользуемый в зависимости от того, какие lib MFC).
В этом случае можно использовать/NOD:LIBC.LIB. Тем не менее если статическая библиотека обращается к любой статические глобальные данные времени выполнения C _errno или стандартного устройства ввода, вы получите неразрешенных внешних компонентов в эти символы.
Одно решение, которое всегда будет работать — изолировать код однопоточной в библиотеку DLL и вызывать его защищены семафоров с многопоточный код MFC.
Как вариант не использовать библиотеку MFC (для любителей Borland Delphi это библиотека VCL ), которая упрощает программирование. В этом случае придется весь код набирать вручную и работать только с WinAPI ( Win dows Application Programming Interface, прикладной программный интер фейс) . Программа получается очень маленькой и быстрой. Результирую щий код будет меньше, чем при использовании MFC в сочетании с самым большим сжатием.
Акан Курмангалиев
Акан Курмангалиев
2 148
Лучший ответ