Скомпилируйте pe-parse библиотеку с Visual Studio 2019 и cmake для x86. - PullRequest
2 голосов
/ 11 января 2020

Я пытаюсь собрать pe-parse библиотеку для некоторых вещей. У меня на рабочем столе установлены Visual Studio 2019 и cmake. pe-parse library git говорит, что нужно скомпилировать библиотеку с помощью команды ниже.

# Compile 64-bit binaries with Visual Studio 2017
cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_BUILD_TYPE=Release ..

# Compile 32-bit binaries with Visual Studio 2017
cmake -G "Visual Studio 15 2017" -DCMAKE_BUILD_TYPE=Release ..

У меня только Visual Studio 2019, поэтому я скомпилировал с cmake -G "Visual Studio 16 2019" -DCMAKE_BUILD_TYPE=Release ... Но библиотека скомпилирована для 64-битных компьютеров, поэтому, если я пытаюсь использовать ее в x86, она показывает, что библиотека для x64, и выдает сообщение об ошибке ниже.

1>main.obj : error LNK2019: unresolved external symbol "struct peparse::_parsed_pe * __cdecl peparse::ParsePEFromFile(char const *)" (?ParsePEFromFile@peparse@@YAPAU_parsed_pe@1@PBD@Z) referenced in function _main
1>lib\pe-parser-library.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
1>C:\Workspace\Windows\CPP\MalwareAnalysis\Debug\MalwareAnalysis.exe : fatal error LNK1120: 1 unresolved externals

Я установил MSV C v141 - VS2107 C ++ x64 / x86 build tools (v14.16), но cmake -G "Visual Studio 15 2017" -DCMAKE_BUILD_TYPE=Release .. показывает мне ошибку ниже.

CMake Error at CMakeLists.txt:2 (project):
  Generator

    Visual Studio 15 2017

  could not find any instance of Visual Studio.

Нужно ли устанавливать Visual Studio 2017 для сборки библиотеки для системы x86?

1 Ответ

0 голосов
/ 11 января 2020

Согласно документации, генератор Visual Studio 16 2019 равен больше не по умолчанию для целевой платформы Win32:

Имя целевой платформы по умолчанию (архитектура ) является хостом и указывается в переменной CMAKE_VS_PLATFORM_NAME_DEFAULT.

Для сборки проекта для Win32 на 64-битном хосте просто передайте соответствующий параметр -A:

cmake -G "Visual Studio 16 2019" -A Win32 <other options>

Генераторы для предыдущие Версии Visual Studio по-прежнему по умолчанию для Win32. Например, документация для генератора Visual Studio 15 2017 гласит:

Имя целевой платформы (архитектура) по умолчанию - Win32.

...