Warm tip: This article is reproduced from serverfault.com, please click

其他-使用Kotlin Native,构建Windows exe,我可以将库(dll)捆绑到exe中吗?

(其他 - With Kotlin Native, building a windows exe, can I bundle libraries ( dlls ) into the exe?)

发布于 2020-01-24 19:18:33

假设我要构建一个简单的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项目执行此操作,以及如何执行此操作。)

Questioner
treesAreEverywhere
Viewed
0
Carlos Chuck 2020-11-30 09:34:11

我也在研究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本机编译器一起使用