visual studio msvc 编译 libffi 静态库
说明
-
最近需要在 windows 11 上编译 libffi,使用
Visual Studio 2022MSVC。 -
直接下载下来的 libffi,编译失败,主要是 汇编文件无法正常编译导致
-
经过搜索发现,github 有个在 visual studio 上编译 libffi 的仓库,验证了一下发现可以正常编译,因此做个记录。
获取 libffi
-
下载官方 libffi 库: https://github.com/libffi/libffi.git ,建议使用 git 拉取
git clone https://github.com/libffi/libffi.git -
下载 visual studio 上可以编译的 libffi 的仓库,地址 https://github.com/winlibs/libffi.git,建议 git 拉取代码
git clone https://github.com/winlibs/libffi.git
编译
-
这里优先使用 visual studio 上可以编译的 libffi 的仓库
git clone https://github.com/winlibs/libffi.git -
当前编译环境是
Visual Studio 2022,编译为 x64 的,选择仓库下的libffi-win32\win32\vs17_x64\libffi-msvc.sln -
打开后,直接编译,即可编译生成 libffi 的静态库

小结
-
经过研究发现,原来 汇编文件,如
win64_intel.S做了特殊的处理操作 -
visual studio 编译汇编文件的方法
cl.exe /EP /I . /I $(SolutionDir)..\.. /I $(SolutionDir)..\..\include /I $(SolutionDir)..\..\src\x86 $(SolutionDir)..\..\src\x86\win64_intel.S > $(Configuration)/win64_plain.asmml64.exe /c /Cx /Fo $(Configuration)/win64.obj $(Configuration)/win64_plain.asm


- 参考 汇编文件,如
src\x86\win64_intel.S的编译方法,官方最新libffi仓库,依旧可以使用 visual studio 正常编译为 【静态库】
