如何将 Mac 上的 swift 文件编译为可执行文件以在 Windows 上运行?
我只需要一个可以从 C# 代码调用的可执行文件。
最佳答案
如果您有适合 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 Port (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和name复制到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目录下运行
祝你好运。谢谢。
关于swift - 在 Mac 上编译 Swift 在 Windows 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43033106/