windows 上使用 msvc 编译 libffi

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工程,需要哪个版本随意选。
在这里插入图片描述
用法很简单了,选择你想编译的版本的工程打开,执行编译,得到静态库。
或者更改配置选项,选择到处成dll
在这里插入图片描述
则导出成动态库版本
根据项目选择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”,然后放弃,算是一次失败的尝试吧。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值