假设我要构建一个简单的Windows exe文件,该文件执行带有curl的HTTP请求。
(请参见示例:https : //github.com/JetBrains/kotlin-native/tree/master/samples/curl)。
上面的示例可以运行,但是为了使exe运行,它需要libcurl-4.dll
在本地目录或安装目录(例如C:\msys64\mingw64\lib
)中找到。
我想只提供exe文件,而不必分别提供dll文件。是否可以将exe文件从库(和传递依赖项...)捆绑到exe文件中,然后将其使用的所有内容构建为exe文件?
(这个问题是关于我是否可以通过Kotlin 1.3.61 Native项目执行此操作,以及如何执行此操作。)
我也在研究Kotlin,花了很多小时才意识到如何处理def文件,包含文件和静态库。
我举了一个关于如何在kotlin-native上使用静态库(带有gzip的curl和由mingw编译的SSL支持)的示例。这样,你就不需要随应用程序一起提供dll文件
https://github.com/carlosrafp/Libcurl-Kotlin-Native-standalone
在libcurl.def文件中,你可以看到:
headers = curl/curl.h // path to curl header
libraryPaths = src/nativeInterop/cinterop // path to your static library
staticLibraries = libcurl.a // the static library
linkerOpts.mingw = -lws2_32 -lwldap32 // linking dependences
我基于jonnyzzz的精彩帖子:
https://jonnyzzz.com/blog/2018/10/29/kn-libcurl-windows/
你需要使用mingw(libcurl,gzip)和msys2 / mingw(openssl)来构建静态库,以与kotlin本机编译器一起使用