最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

windows 上使用 msvc 编译 libffi

运维笔记admin1浏览0评论

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/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/winlibs/libffi

winlibs已经将任何你需要的版本都做成了vs工程,需要哪个版本随意选。

用法很简单了,选择你想编译的版本的工程打开,执行编译,得到静态库。
或者更改配置选项,选择到处成dll

则导出成动态库版本
根据项目选择Debug/Release版

3.通过newlawrence的版本编译3.2.1

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

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

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

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

git clone https://github/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”,然后放弃,算是一次失败的尝试吧。

发布评论

评论列表(0)

  1. 暂无评论