windows 上使用 msvc 编译 libffi

Windows下使用mingw64编译msvc版本libffi

  • 1.使用vcpkg下载vc14_x64版本
    • 1.1 安装vcpkg
    • 1.2 安装libffi
    • 1.3 cmake集成
  • 2.通过Github的winlibs编译任意版本
  • 3.通过newlawrence的版本编译3.2.1
  • 4.使用mingw64通过cl.exe编译vs16_x64版本

1.使用vcpkg下载vc14_x64版本

1.1 安装vcpkg

前提条件

  • Windows 7 or newer
  • Git
  • Visual Studio 2015 Update 3 or greater with the English language pack

执行一下命令安装vcpkg

git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat

1.2 安装libffi

执行

vcpkg install libffi --triplet x64-windows

–triplet是指定二进制版本,如果是32位则是x86-windows
使用 x64-windows-static 则是x64版本静态链接库

动态库版本包括这些文件:

  • ffi.h (C:\Program Files\vcpkg\installed\x64-windows\include) header files
  • ffitarget.h (C:\Program Files\vcpkg\installed\x64-windows\include) header files
  • libffi.lib (C:\Program Files\vcpkg\installed\x64-windows\lib) export lib
  • libffi.dll (C:\Program Files\vcpkg\installed\x64-windows\bin) link dll
  • libffi.pdb (C:\Program Files\vcpkg\installed\x64-windows\bin)

1.3 cmake集成

可以通过以下语句集成到其他cmake工程中

    find_package(libffi CONFIG REQUIRED)
    target_link_libraries(main PRIVATE libffi)

2.通过Github的winlibs编译任意版本

拷贝winlibs的编译工程

git clone https://github.com/winlibs/libffi

winlibs已经将任何你需要的版本都做成了vs工程,需要哪个版本随意选。
windows 上使用 msvc 编译 libffi_第1张图片
用法很简单了,选择你想编译的版本的工程打开,执行编译,得到静态库。
或者更改配置选项,选择到处成dll
windows 上使用 msvc 编译 libffi_第2张图片
则导出成动态库版本
根据项目选择Debug/Release版
在这里插入图片描述

3.通过newlawrence的版本编译3.2.1

git clone https://github.com/newlawrence/Libffi
cd Libffi
msvcbuild

直接编译成静态库
这个版本CmakeLists不适用于3.3版本,不可直接拷贝到最新版本编译。

4.使用mingw64通过cl.exe编译vs16_x64版本

这一种是libffi作者使用的方法,由于无法还原作者当时的编译环境。根据README.md在mingw环境下尝试了以下步骤:

git clone https://github.com/libffi/libffi.git
 ./autogen.sh 
./configure CC="../msvcc.sh -m64" CXX="../msvcc.sh -m64" LD=link CPP="cl -nologo -EP" CXXCPP="cl -nologo -EP" CPPFLAGS="-DFFI_BUILDING_DLL"  --disable-dependency-tracking

configure成功后,最后报错 “缺少makeinfo”,然后放弃,算是一次失败的尝试吧。

你可能感兴趣的:(Windows,c++,ffi,windows,msvc,vcpkg)