Вопрос по visual-c++ – Как сделать ссылку на msvcrt.dll вместо msvcr100.dll в VC ++ 10.0?

12

Можно ли связать VC6 с MSVCRT.DLL в VC ++ 10.0?

По умолчанию он связывается с MSVCR100.DLL, но я не хочу распространять еще одну DLL (MSVCRT.DLL уже имеется в каждой поддерживаемой мной ОС).

== EDIT ==

Чтобы уточнить: мое приложение является чисто C-приложением, которое выполняет вызовы WinAPI. Я понимаю, что для выполнения C ++ потребуется среда выполнения C ++, которая по умолчанию не включена в Windows (и, скорее всего, в любом случае должна соответствовать компилятору). У меня вопрос о чистом использовании C и только о функциях CRT, которые существуют в самой ранней версии Windows, на которую я нацеливаюсь.

Ваш Ответ

4   ответа
0

Это требует совместимости CRT в основных выпусках компилятора, которую Microsoft пыталась приспособить (например, добавила кучу VC5 к среде выполнения VC6SP2), но в итоге отказалась и представила msvcrxx.dll, которые используются сегодня. Если вы посмотрите на источник CRT, вы найдете много #ifndef _SYSCRT, в котором разница между msvcrt.dll от Microsoft и той, что используется вашим компилятором при генерации кода.

Рэймонд Чен из Microsoft писал об этом несколько лет назад. Из его блогаWindows не является каналом доставки Microsoft Visual C / C ++.:

one DLL compatible with all versions of Visual C++ was a maintenance nightmare ... At some point, the decision was made to just give up and declare it an operating system DLL, to be used only by operating system components.

Акцент мой. Подумайте еще раз: ТАК сложно добавить поддерживаемый файл в программу установки или связать статическую версию CRT вместо зависимости от системного компонента, который Microsoftgave up on compiler compatibility more than a decade ago?

Удивительно, сколько людей все еще отрицает это решение. Эти люди вызвали& quot; большое горе для команды разработчиков Visual C ++ & quot;и если ты продолжаешь их бесить, я не удивлюсь, если они тебя иногда бесят, какчто они сделали в Windows XP это разбило много приложений VC6. Многие люди не следовали рекомендациям разработчика приложений для Windows 2000 и помещали настройки / сохраненные игры в папку Program Files. Мы все знаем, что это хороший конец, когда вышла Windows Vista.

Кстати, dll не является VC6. Использование старой библиотеки DLL в системе автоматически приведет к сбою жизненного цикла разработки безопасности Microsoft. (https://blogs.msdn.microsoft.com/oldnewthing/20100607-00/?p=13793/#10020962). Вы не ожидаете, что Microsoft использует VC6 для компиляции своего современного продукта?

Версия msvcrt в современных версиях Windows никогда не упоминалась в соответствующих версиях Windows SDK. Независимо от того, какую версию компилятора или версию CRT lib вы используете, она, скорее всего, не будет соответствовать большинству версий DLL на компьютере вашего клиента. Microsoft обновляет CRT DLL (например, когдавыпуск исправления для проигрывателя Windows Media) использование текущей цепочки инструментов, которая может или не может быть обнародована. Вы можете рассчитывать на нихnot используя древний компилятор WDK и библиотеки для создания библиотеки msvcrt в Windows (почему древняя? потому чтокоманда WDK не любит, когда люди используют их компилятор для связи с msvcrt, и удалила лазейку в версии 8.0, чтобы остановить эти «умные» операции. люди).

Вы пытаетесь сказать нам, чтоC Runtime такое недокументированный интерфейс? Ну, это тоже не правда.
msvcrt.dll был повышен до статуса системной DLL несколько лет назад. Так что выcan рассчитывать на это не ломая. Если вы не можете, вы также не должны полагаться наkernel32.dll или другие системные библиотеки DLL не ломаются. Ваше утверждение было верным до Windows XP и до Windows 2000 (с некоторыми примененными исправлениями). Но в наши дни это неправильно. И да, я видел, что вашему ответу почти четыре года.
Да, это правильно. Старые библиотеки DLL из VC6 могут быть задокументированы, но все, что есть в вашей системе 32, отсутствует, даже если они имеют одно и то же имя файла. Вы не можете рассчитывать на то, что он не сломается, потому что Microsoft сказала, что использовать его не вам.
так вы говорите, потому что это становится системной dll, вы можете свободно использовать недокументированные интерфейсы из dll? хорошо, что это не так. если то, что вы делаете, не документировано, это не гарантирует, что вы продолжите работатьblogs.msdn.microsoft.com/oldnewthing/20160308-00/?p=93123
Некорректное! Одинcan рассчитывать на это не ломается. По одной простой причине:old programs который связан сmsvcrt.dll continue работать с новыми. Однако - но это совсем другой вопрос и, возможно, причина путаницы здесь (?) - если вы создаете приложение с более новым DDK / WDK для связи сmsvcrt.dll и ты сделалnot укажите правильную минимальную ОС, у вас может получиться исполняемый файл, который статически импортирует функции изmsvcrt.dll представил с XP. Это вопрос обратной и прямой совместимости. Интерфейс ЭЛТdocumented/stable.
14

Важно: этот ответ относится к официальным наборам инструментов Microsoftonly, а не к чему-то вроде цепочки инструментов MinGW (на основе GCC), которая также известна как связывающаяmsvcrt.dll, Но я сомневаюсь, что Microsoft все равно будет поддерживать этот набор инструментов;)

Short answer: no!

Даже не пытайтесь использовать Visual C ++ 2010 для этой задачи.

Существует официальный и поддерживаемый способ: используйте автономный WDK, если вам нужно, чтобы ваше приложение связывалось сmsvcrt.dll!

Вам следуетnever попытаться использовать набор инструментов компилятора, который не соответствует заголовкам и библиотекам CRT. Используйте цепочки инструментов, как задумано Microsoft, а не пэчворк, который вы создаете. Не смешивать и сочетать. Используйте то, что вам передала Microsoft. Но используйте это (и не бойтесь FUD).

Новейший WDK, который вы можете использовать для ссылки наmsvcrt.dll (7600.16385.1) используетcl.exe версия 15.00.30729.207. этосоответствует примерно для компилятора, который поставляется с Visual C ++ 2008! Позднее WDKs будут ссылаться на CRT версии Visual C ++they require.

msvcrt.dll вы найдете, скажем, Windows XP или Windows 7not original DLL, которая была включена в Visual C ++ 6.0 (даже самая обновленная версия VC6).

Это также былоcorrectly указано в других ответах. Там нет сюрпризов.

Тем не менееmsvcrt.dll которые вы найдете в современных системахwillвопреки тому, что предлагают другие ответы, разрешите программам, которые связаны с оригинальным ЭЛТ VC6, продолжать работать. Даже сегодня. Это контракт. И продвижениеmsvcrt.dll к системной DLL далее подтвердил этот контракт.

A little historical background

Наборы инструментов, используемые Microsoft внутри компании, были в некоторой степени похожи на те, что были в WDK до Windows 8 WDK. Я напишу об этом исключительно и буду использовать термин WDK (или автономный WDK) равномерно, даже если до выпуска Vista WDK их называли DDK.

Хорошие люди изOSRкоторые, кажется, имеют доступ к исходному коду Windows, или люди, которые делают это, подтвердили во время одного семинара, на котором я присутствовал несколько лет назад, что WDK раньше был урезанной версией инструментария, который использовался для внутренней сборки Windows в то время (~ 2005) , Подобные подсказки можно найтиот Ларри Остермана из MSFT а такжеранние работы Алекса Ионеску на tinykrnlсоавтор последних выпусков «Windows Internals». BCZ, вероятно, намекает наbuild -cZ, часто используемый вызов с WDK, которые я описываю здесь.

Это интересно в этом контексте: все автономные WDK позволяют создавать исполняемые файлы, которые ссылаются наmsvcrt.dll по умолчанию. Для автономных WDKmsvcrt.dll являетсяthe CRT, как и для Visual C ++ 2010, которыйmsvcr100.dll.

Следует также отметить, что наборы инструментов были обновлены вместе с набором инструментов Visual Studio. Например, в 3790.1830 WDKcl.exe сообщает примерно так же, как Visual C ++ 2003:

C:\WINDDK\3790.1830\bin\x86>cl /version
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.4035 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

И для WDK 6001.18002 (последний поддерживает Windows 2000!) Примерно так же, как в Visual C ++ 2005:

C:\WINDDK\6001.18002\bin\x86\x86>cl/version
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.278 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

Для 7600.16385.1 WDK он наравне с Visual C ++ 2008.

Standalone WDKs

Версии WDK, начиная с версии для XP и до (и включая) Windows 7 SP1, не требовали Visual Studio. Они пришли со своим собственным набором инструментов.

Версии до Windows XP требовали Visual C ++ для сборки чего-либо. Если я правильно помню VC6 для Windows 2000 DDK.

Версии, начиная с Windows 8 WDK, снова требуют Visual C ++ и интегрируются с ним более плотно, чем когда-либо (включая мастера и даже расширения для отладки и некоторых задач, связанных с драйвером). Это также причина, по которой при использовании соответствующих WDK они будут связываться с CRT соответствующей цепочки инструментов.

Во времена автономных WDK не было ничего неслыханного - и это и есть причина DDKWizard иVisualDDK - что люди пытались использовать Visual Studio, чтобы обернуть процесс сборки WDK. Некоторые даже использовалиunsupported метод, рекомендованный Microsoftagainst и построил свои драйверы с помощью наборов инструментов Visual Studio. Эти неподдерживаемые методы примерно равны тому, что вы пытаетесь.So don't.

В любом случае, процесс сборки с использованием WDKbuild.exe сsources а такжеmakefile и так далее было громоздким и ограничивающим. Например, для сборки из любого исходного файла за пределами текущего каталога или его родительского каталога вам нужно написать свои собственные правила NMake. В конце концовbuild.exe был оберткой вокруг сборки на основе NMake. Ваш местныйmakefile.inc будет включен глобальным, предоставленным WDK / DDK.

Why linking to msvcrt.dll is officially supported

Как упоминалось ранее, ссылки наmsvcrt.dll поддерживается автономными WDK.

Это прекрасно, а также. На самом делеUSE_MSVCRT=1 заявление вsources файл имеет именно такой эффект. УвидетьВот, Цитирование из документации 7600.16385.1 WDK:

USE_MSVCRT

Use the USE_MSVCRT macro to instruct the Build utility to use the multithreaded runtime libraries in a DLL for your build.

Syntax

USE_MSVCRT = 1

[...]

Note You should never list Msvcrt.lib or Msvcrtd.lib in TARGETLIBS. However, you can list Ntdll.lib in TARGETLIBS.

Зачем Microsoft даже предлагать этот путь, если он не поддерживается ими? Правильно, они не будут!

As a matter of fact said WDKs (XP..7 SP1) have been using the system DLL msvcrt.dll as their CRT.

Caveats

В основном это одна оговорка. Способ реализации SEH со временем изменился с появлением новых версий Visual C ++. Поскольку наборы инструментов из автономного WDK тесно связаны с конкретной версией Visual C ++, они наследуют соответствующую обработку SEH.

Например, когда вы используете Windows 7 SP1 WDK для целевой Windows 7 и сUSE_MSVCRT=1Статически импортирует_except_handler4_common, Эта функция не была доступна в Windows Server 2003, например. Таким образом, пытаясь запустить такое приложение в версиях Windows доtargeted версияmay потерпеть поражение. Таким образом, в таком случае вы рискуете перейти на «неподдерживаемую территорию». и все отказы от ответственности применяются. Тем не менее, у вас есть возможность использовать методизложил здесьто есть ссылка наmsvcrt_win2000.obj, msvcrt_winxp.obj а такжеmsvcrt_win2003.obj (доступно в Vista и 7 WDK) для достижения желаемого уровня (двоичной) обратной совместимости.

Ну, с другой стороны, если вы решили установитьWINVER=0x0601 Вы также не должны удивляться, обнаружив, что полученный исполняемый файл импортирует функции из kernel32.dll (или других системных библиотек DLL), которые недоступны, скажем, в Windows XP. Так зачем ожидать другой семантики в отношенииmsvcrt.dll?

As another side-note: даже проверенные сборки (обычно считается, что они соответствуют отладочным сборкам) также ссылаются наmsvcrt.dll, а не его версия отладочной версии! Потому что & quot; проверено & quot; относится к тому, что утверждения остаются в; он не относится к конкретным конфигурациям ЭЛТ, таким как «выпуск» или "отладка". Предположение, что недоступность отладочной сборки дляmsvcrt.dll в автономных WDK означает, что это как-то неthe Среда выполнения C этих WDK - это недоразумение того, чтоchecked build средства.

Есть еще одна небольшая оговорка. Если вы используете, скажем, Windows 7 WDK, чтобы добиться связывания сmsvcrt.dllВы используете набор инструментов, не зная о событияхsince Windows 7. Это включает в себя библиотеки импорта, но также заголовки. Поэтому не ожидайте, что он будет поддерживать функции, которые были недоступны на момент выпуска.

System DLL: msvcrt.dll

msvcrt.dll несколько лет назад был повышен до статуса системной DLL, что означает, что она входит в состав системы (и на нее можно положиться,literally) в отличие от других CRT для Visual C ++, для которых вам необходимо установить соответствующие распространяемые пакеты. Что также является сутьсообщение в блоге Раймонда Чена цитируется в другом ответе.

Поскольку автономные WDK (XP..7 SP1) по умолчанию связаны сmsvcrt.dll как их ЭЛТ, нет никаких объективных аргументов против этого. Конечноopinions варьироваться.

A "reply"

к несчастьюэтот ответ у которого естьсильно изменился с тех пор как я впервые это прокомментировал, он увековечивает FUD и пытается вырвать цитаты из якобы авторитетных источников из контекста. Он также ссылается на оригинальные источники (MSFT), которые - после тщательного изучения - не поддерживают заявления, для поддержки которых они были связаны.

Microsoft's Raymond Chen blogged on this a few years ago. From his blog Windows is not a Microsoft Visual C/C++ Run-Time delivery channel:

one DLL compatible with all versions of Visual C++ was a maintenance nightmare ... At some point, the decision was made to just give up and declare it an operating system DLL, to be used only by operating system components.

Emphasis mine. Think again, are you really writing something that ships with Windows? Is it THAT difficult to add a supported file to your setup program or link the static version of CRT, instead of depending on a system component that Microsoft gave up on compiler compatibility more than a decade ago?

Итак, февраль 2010 г. - это более десяти лет назад (когда был написан этот ответ: март 2016 г.)? Потому что это дата релиза 7600.16385.1 WDK, которыйofficially поддерживает связывание сmsvcrt.dll.

И остальные заявления Рэймонда могут соответствовать первоначальному замыслу Microsoft, но он даже признает, что они отказались от этого и повысили его до системной DLL.

Кроме того, довольно нечестно смешивать действительно древнюю историю (Windows 9x) с рекомендациями в пользу использования автономных WDK, которые даже не поддерживают Windows 9x. Исторический фон, который описывает Рэймонд, был до W2K и не-NT. Фон, который я описал выше, относится к линии NT для Windows, и я знаю только отдельные DDK / WDK (и более новые) из практики, поэтому я не могу сказать, как это было или должно было быть до этого.

Все, что сказал: его блогnot быть перепутанным сofficial documentation от Microsoft, хотя в его блоге можно найти много драгоценных камней, и я много лет читал их.

И хотяthat более десяти лет назадmsvcrt.dll Информация о версии в Windows 2000 (SP4) гласит:

Description:    Microsoft (R) C Runtime Library
Product:        Microsoft (R) Visual C++
Prod version:   6.10.9844.0
File version:   6.10.9844.0

... вопреки вступительному заявлению Рэймонда.

Только с Windows XP это изменилось на:

Description:    Windows NT CRT DLL
Product:        Microsoft« Windows« Operating System

It is amazing how many people are still in denial of this decision.

После некоторых предыдущих комментариев было бы справедливо предположить, что это прямо нацелено на меня.

Ну, я не отрицаю решений, принятых с выпуском Windows 8 WDK. Но это не является "невыполненным" автономные WDK, которые официально поддерживали ссылки наmsvcrt.dll и при этом это не "недокументированный" что можно найти в их соответствующихofficial documentation.

Привет, это круто со мной, если вы находитесь в роскошном положении, когда вам нужно только поддерживать Windows 7 или 8 или более новую версию, или что-то в этом роде. Однако яhave to также поддерживать более ранние версии Windows, и поэтому я в полной мереofficial инструменты, предоставляемые Microsoft для этих версий Windows. Будь то Visual C ++ 2005 с соответствующим интегрированным SDK или автономный WDK.

Those people caused "a lot of grief for the Visual C++ product team"

Это утверждение относится к вышеупомянутомусообщение в блоге Раймонда Чена, но извлекает утверждения Раймонда из контекста, особенно из временного контекста. Горе было вызвано тем, что люди пытались приблизительно понять, что хочет сделать аскер - и того хуже: проникнуть в кишки / внутренностиmsvcrt.dll, И это было до W2K. это былоnot (и не будет) вызвано использованием официального набора инструментов, такого как автономные WDK от Microsoft.

The msvcrt version in modern versions of Windows has never been mentioned in the corresponding versions of Windows SDK.

В то время какmodern должно быть квалифицировано, использование «Windows SDK» предполагает, что он относится ко всем пакетам SDK для Windows после того, как они были переименованы из «Platform SDK». И я склонен в это поверить. Но автор игнорирует автономные Windows WDK (и до этого DDK), которые не только упоминают об этом, но и используютmsvcrt.dll как их ЭЛТ. Oниare официальные наборы инструментов от Microsoft, предназначенные как для разработки ядра, так и для пользовательского режима.

Microsoft update the CRT DLL (for example, when releasing a Windows Media Player patch) using a current toolchain that may or may not be made public.

Это правильно.msvcrt.dll постоянно обновляетсяbecause он был повышен до системной DLL. И этоis контракт, на который можно положиться при использовании WDK. Они не собираются ломать приложения, созданные с использованием их собственных наборов инструментов, просто потому, что они исправляютmsvcrt.dll.

You can count on them are not using the ancient WDK compiler and libs to build the msvcrt DLL in Windows

Я даже не уверен в этом, ноofficial Набор инструментов 2010 года - это не то, что я бы назвал древним. Кроме того, поскольку Microsoft отказалась от поддержки XP и 2003, им нужно только поддерживать Vista и более поздние версии. Это должно быть проще с последней версией Visual C ++, котораяdirectly provide компилятор и инструменты для WDK, начиная с Windows 8.

(why ancient? Because the WDK team does not like people use their compiler ,to link against msvcrt either, and removed the loophole in version 8.0 to stop those "clever" people).

О, правда, Дорон действительно говорит?that в связанном сообщении на форуме? Ну нет:

the win7 wdk build deployed successfully because you linked against the windows CRT (msvcrt.dll). we don't want 3rd parties doing that anymore, so we removed that capability in the win8 wdk. it still works for backwards compat. while it may deploy successfully, there may be whck logo checks that make sure you use the right CRT

(акцент мой)

Это заявление о «политическом решении». (и официальный при этом) от Microsoft, чтобы изменить свою позицию. & Quot; больше & quot; фактически подразумевается, что это изменилось только в Windows 8 WDK. Первый современный WDK, который снова интегрируется с Visual C ++ (начиная с Windows 2000 DDK). Таким образом, поскольку WDK был превращен из автономного набора инструментов в расширение, которое интегрируется с данной версией Visual C ++, новые требования вовсе не являются неожиданностью.

Кстати, также нечестно спорить, основываясь на Windows 8 WDK и новее, когда предложения, касающиеся автономных WDK, которые используютmsvcrt.dll как их ЭЛТ, были до этого изменения политики. Также нечестно смешивать историю, которая привела к,msvcrt.dll к системной DLL с эпохойafter это было повышено.

Glossary CRT == C/C++ runtime 3790.1830 == Windows Server 2003 Service Pack 1 (SP1) Driver Development Kit (DDK) 6001.18002 == Windows Driver Kit SP1 for Windows Server 2008/Vista 7600.16385.1 == Windows Driver Kit version 7.1.0 (Supporting Windows 7, Windows Vista, Windows XP, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003) TL;DR

Вопрекиэтот ответ совершенно нормально использовать собственные и неизмененные наборы инструментов Microsoft, такие как автономные WDK, которые поддерживают связывание сmsvcrt.dll (XP..7 SP1) "изначально". Это даже задокументировано в документации, поставляемой с этими наборами инструментов (если только вы не решите не устанавливать ее или не закрывать глаза :)).

Вы "только"have to убедитесь, что вы указали правильную версию Windows при сборке (по сути, то же самое, что определение правильной версииWINVER). Но то же самое можно сказать и о других системных DLL (например,kernel32.dll, user32.dll ...).

However, с помощьюany Visual C ++ с 2002 года, чтобы ссылаться наmsvcrt.dll is bound to create trouble, Не смешивать и сочетать. Просто используйте CRT, соответствующий этим конкретным версиям Visual C ++.

Спасибо за ваше исследование. Интересно. С тех пор я в конечном итоге использовал MinGW, который по умолчанию связан с MSVCRT и Eclipse CDT в качестве IDE. rustyx
10

которая связана с Windows, а не с Visual Studio. Каждая новая версия Windows получает новую версию MSVCRT.DLL, как вы можете убедиться, проверив размеры файлов.

Вы можете скомпилировать против системной копии MSVCRT.DLL с помощью Windows Driver Kit. Обратите внимание, что эта DLL-библиотека предназначена для использования "только компонентами системного уровня". Что такое компонент системного уровня? Ну, водитель. Или, например, текстовый сервис:

http://blogs.msdn.com/b/tsfaware/archive/2008/01/17/visual-studio-2008-issues.aspx

If you're building a text service DLL ... I would recommend installing the Vista (or XP) DDK and use the DDKWizard instead. The DDK comes with its own C/C++ compiler that uses the C Runtime Library that ships with the OS (and won't cause problems with other applications) ...

Дополнительная информация:

http://kobyk.wordpress.com/2007/07/20/dynamically-linking-with-msvcrtdll-using-visual-c-2005/

A question arises, what does Microsoft do? They deploy their applications to a variety of Windows environments. A look at Windbg’s dependencies showed it’s using MSVCRT.DLL rather than one of the newer CRTs. Microsoft’s new Network Monitor 3.1 also uses MSVCRT.DLL. Windows Desktop Search is also using the old, trusty CRT.

How can all these new applications be using the vintage CRT? They’re not still using the antique, unsupported Visual C++ 6.0, are they? Well, no. The answer is more complicated and can be found in the Windows Driver Kit (WDK).

Обновление: Windows 8 Driver Kit представил новую систему сборки на основе MSBuild, которая больше не связывается с системной копией MSVCRT.DLL. Однако двоичные файлы, созданные с помощью комплекта драйверов Windows 7, по-прежнему работают в Windows 8 и Windows 10.

MSVCRT.DLL по-прежнему поставляется с Windows 10 для обратной совместимости, поэтому он имеет версию файла 7.0. #####. Компонент, который все еще активно разрабатывается, например user32.dll, имеет версию файла 10.0. #####.

За исключением того факта, что драйвер вообще не будет использовать библиотеки DLL пользовательского режима, это хороший ответ.
использование DDK для компиляции приложения с графическим интерфейсом не поддерживается.
Спасибо! Вторая ссылка удивительна, она все объясняет и предлагает хорошее решение, чтобы избежать взлома! rustyx
Исправление, ATL 7.0 в 6001.18002, ATL 7.1 в 7600.16385.1.
Просто не соответствует действительности. Microsoftdoes поддерживает и уже довольно давно поддерживает создание кода пользовательского режима с помощью WDK (MFC_FLAGS вSOURCES файлы, например, илиATL_INC_PATH который по умолчанию%DDKROOT%\inc или жеUSE_ATL, USE_MFC а такжеUSE_MSVCRT ... о боже) В конце концовseveral Модели драйверов запускаются из пользовательского режима, и поэтому практично иметь возможность использовать ATL и друзей. Если вы думаете, что ATL является только заголовком, вы, очевидно, не знаете его подробно. Но не позволяйте приведенным фактам отговорить вас от вашего взгляда.
6

х функциях из msvcrt.dll. В моем случае мне часто нужны процедуры форматирования с плавающей точкой, такие как _sntprintf (). И маловероятно, что функциональность таких функций когда-либо изменится. По этой причине я создал & quot; msvcrt-light.lib & quot; библиотека импорта в качестве замены стандартной библиотеки, которую я включаю в проект MSVC. (http://www.tu-chemnitz.de/~heha/hs/msvcrt-light.zip/)

Для полноценных программ на C ++ файл msvcrt-light.lib может вообще не подойти. Используйте DDK, как указано выше.

просто к вашему сведению, вам не нужно иметь те.cpp файлы, но они упрощают создание библиотек импорта из стандартного проекта Win32. Однако вы также можете использовать простой make-файл или & quot; make project & quot; инструктироватьlib.exe создать эти библиотеки импорта без каких-либо исходных файлов C / C ++.

Похожие вопросы