如何在Mac上编译swift文件作为可在Windows上运行的可执行文件?
我只需要一个可以从C#代码调用的可执行文件。
答案 0 :(得分:3)
如果你有一个适用于Windows的swift库模块,你的macOS swift编译器可以生成Windows的目标文件,例如Hello.obj。 此外,如果您有Windows的特殊链接器和一些C / C ++运行时对象文件,则可以构建可执行文件(例如Hello.exe)。
所有你需要的是跟随。
将目录从Windows软件包复制到macOS。
1)在Windows上安装Swift for Windows ver-1.5(https://swiftforwindows.codeplex.com)
2)将目录从Windows复制到macOS
SwiftForWindows/Swift/lib/swift // Swift library for Windows (MinGW)
SwiftForWindows/Swift/lib/mingw // C/C++ runtime object files (MinGW)
为MacOS安装Swift编译器(https://swift.org/builds/swift-3.0-release/xcode/swift-3.0-RELEASE/swift-3.0-RELEASE-osx.pkg)
您应该为库模块和编译器使用相同的版本。使用3.0版。 Swift 3.0.1或3.1不适用于SwiftForWindows-1.5。
使用Mac端口安装MinGW链接器
1)安装Mac端口(https:// www.macports.org/install.php)
2)$ sudo port install x86_64-w64-mingw32-binutils
3)创建目录bfd_ld并复制/ opt / local / bin / x86_64-w64-mingw32-ld并命名为ld
$ mkdir bfd_ld
$ cp -p /opt/local/bin/x86_64-w64-mingw32-ld bfd_ld/ld
更多设置
1)重命名macOS中的目录
mv SwiftForWindows/Swift/lib/swift/mingw SwiftForWindows/Swift/lib/swift/windows
2)复制C运行时对象(3个文件)
cp SwiftForWindows/Swift/lib/mingw/*.o bfd_ld
编译
echo "print(Hello)" > Hello.swift
~/Library/Developer/Toolchains/swift-3.0-RELEASE.xctoolchain/usr/bin/swiftc -target x86_64-pc-windows-gnu -resource-dir SwiftForWindows/Swift/lib/swift -tools-directory bfd_ld -L SwiftForWindows/Swift/lib/mingw -lswiftSwiftOnoneSupport -o Hello.exe Hello.swift
这将生成Hello.exe。您可以忽略“警告:.drectve”消息。
运行
可执行文件需要“SwiftForWindows / My Programs”目录中的DLL。
将Hello.exe复制到Windows中的目录并运行它。
答案 1 :(得分:1)
如果要在Windows上运行Swift代码,最接近的是swift-windows。我从来没有使用过它,但看起来你可以将Swift 3.0代码编译成Windows可执行文件。
要下载预建的二进制文件,请尝试this link。它需要Windows 10 64位和Visual Studio 2015 SDK。此外,您必须拥有一个cygwin或mingw环境。