Я пытаюсь создать WolfSSL, который использует функцию CryptAcquireContext
Windows API. Я пытаюсь собрать его с помощью «cl.exe». Я не хочу использовать «nmake.exe» или «MSBuild.exe», просто «cl.exe».
Если я использую Visual Studio для сборки, я могу установить параметр <PlatformToolset>v120</PlatformToolset>
в файле 'vcxproj', который определяет версию набора инструментов платформы. Если этот параметр установлен, Visual Studio компилирует и связывает код без ошибок.
Если я попытаюсь скомпилировать и связать с помощью «cl.exe», я получу следующее сообщение:
error LNK2019: unresolved external symbol __imp__CryptAcquireContextA@20
Поскольку Visual Studio работает успешно, проблема не связана с отсутствующим пакетом SDK.
документация для cl.exe не содержит никакой информации о набор инструментов платформы. Я попытался добавить /p:PlatformToolset=v120
, как было предложено здесь, но кажется, что только MSBuild принимает этот вариант.
Хотя описание моей проблемы длинное, мой вопрос прост. Как определить набор инструментов платформы для «cl.exe»?
-- РЕДАКТИРОВАТЬ --
добавление Advapi32.lib
после опции \link
устранило проблему связывания.
Однако означает ли это, что я должен указать компоновщику использовать каждый родной файл Windows '.lib', который я использую? Мне не нужно делать это для стандартной библиотеки. Есть ли способ заставить cl
автоматически включать все родные файлы Windows '.lib', как это делается со стандартной библиотекой?
CryptAcquireContext
- словоAdvapi32.lib
вам ничего не говорит? - person RbMm   schedule 10.09.2017Advapi32.lib
после опции\link
. Код связан нормально. Однако означает ли это, что я должен включать каждый родной файл Windows '.lib', который я использую? Мне не нужно делать это для стандартной библиотеки. Есть ли способ заставитьcl
включать все эти файлы одновременно? - person LordCapybara   schedule 10.09.2017.lib
файлы, из которых вы импортируете напрямую. - person RbMm   schedule 10.09.2017