Сборка для Windows NT 4.0 с использованием Visual Studio 2005?

Приложение MFC, которое я пытаюсь перенести, использует afxext.h, что приводит _AFXDLLк установке, и вызывает эту ошибку, если я установил /MT:

Пожалуйста, используйте ключ / MD для сборок _AFXDLL

Мои исследования на сегодняшний день показывают, что невозможно создать приложение для выполнения в Windows NT 4.0 с использованием Visual Studio (в данном случае C ++) 2005.

Это правда? Есть ли обходной путь?

3.08.2008 02:48:43
Кто-нибудь, пожалуйста, защитите это.
Jonathan Mee 4.02.2015 14:11:15
5 ОТВЕТОВ

Нет, есть много приложений, созданных с VS2005, которые должны поддерживать Windows XP, 2000, NT, весь стек. Проблема в том, что (по умолчанию) VS2005 хочет использовать библиотеки / экспорты, отсутствующие в NT.

Смотрите эту тему для некоторого фона.

Затем начните ограничивать свои зависимости с помощью макросов препроцессора и избегайте API, которые не поддерживаются в NT.

9
3.08.2008 16:54:12
Что сбивает с толку эту проблему, так это то, что если вы статически связываете, фактически извлекаются только объектные файлы, необходимые для используемых вами символов, именно поэтому он работает в NT4 большую часть времени.
Yuhong Bao 13.05.2012 04:49:48

Чтобы избавиться от ошибки _AFXDLL, вы пытались изменить настройки, чтобы использовать MFC в качестве статической библиотеки вместо DLL? Это похоже на то, что вы уже делаете, меняя библиотеки времени выполнения на static вместо DLL.

4
23.08.2008 01:16:26

Обходной путь должен исправить многопоточную DLL. Простые инструкции . Краткое содержание:

Поставляемая библиотека библиотеки времени выполнения 8.0 C (MSVCR80.DLL) не поддерживает NT 4.0 SP6 по одной и только одной причине: кто-то из Microsoft добавил вызов функции, GetLongPathNameWкоторого нет в kernel32.dll в NT 4.0.

CRTLIB.C В строке 577 есть вызов GetLongPathNameW. просто замените его: ret = 0; используйте только эту сборку MSVCR80.DLL на NT 4.0.

После того, как вы поработаете, придумать более общее решение должно быть тривиально.

3
17.01.2017 17:15:43

Хотя я не знаком с afxext.h, мне интересно, что из-за этого делает его несовместимым с Windows NT4 ....

Однако, чтобы ответить на оригинальный вопрос: «Мои исследования на сегодняшний день показывают, что невозможно создать приложение для выполнения в Windows NT 4.0 с использованием Visual Studio (в данном случае C ++) 2005».

Ответ должен быть да, особенно если приложение изначально написано или работает на NT4! Если оставить в стороне afxext.h, это должно быть просто ДА.

Другая вещь, с которой я сталкиваюсь, - это слабая натура, в которой люди выбрасывают термин NT. Конечно, большинство людей думают о «NT» как о Windows NT4, но это все еще неоднозначно, потому что «большинство людей» не равно «всем людям».

На самом деле термин «NT» равен серии NT. Серия NT - это NT3, NT4, NT5 (2000, XP, 2003) и NT6 (Vista).

Win32 - это подсистема, для которой вы также нацелены на свой код C / C ++. Поэтому я не вижу причин, по которым нельзя ориентироваться на эту платформу и подсистему NT4 или, если это упражнение по переносу платформы, удалить зависимости MFC, которые VC возможно навязывает.

Добавление в микшер afxext.h звучит как проблема совместимости подсистем. Это часть MFC из моего исследования Google. Похоже, afxext.h является расширениями MFC (Microsoft Foundation Class).

Можете ли вы удалить свою зависимость от MFC? Какой тип приложения это? (CLR, сервис, интерфейс GUI?) Можете ли вы преобразовать проект в неуправляемый проект C ++ в VC 8.0?

Надеюсь, что это поможет вам в этом.

1
18.09.2008 16:18:02

Идея в том, что exe-файл необходим для связи со статической библиотекой.

Попробуйте использовать «Свойства конфигурации», «Общие», «Использование MFC», чтобы «Использовать MFC в статической библиотеке», «Свойства конфигурации», «Общие», «Использование ATL» и «Статическая ссылка на ATL».

«Свойства конфигурации», «C \ C ++», «Генерация кода», «Библиотека времени выполнения» в «Многопоточный (\ MT)»

Машина для сборки тестовой платформы: Visual Studio 2005 на клиентском компьютере с Windows XP SP2: Windows XP с пакетом обновления 2 (не установлен VS2005)

-1
20.11.2008 23:04:42