6

我正在尝试从 JetBrains 了解 Kotlin Native 如何与本教程一起使用:https ://kotlinlang.org/docs/tutorials/native/interop-with-c.html

但这些教程仅适用于 macOS 和 Linux。有时我使用 Windows 计算机,我想知道它在那里是如何工作的。

如何在 Windows 中添加 libcurl 库以及如何将其添加到libcurl.def文件中?

它没有在任何地方解释。

4

5 回答 5

3

libcurl关于如何将动态构建(又名 DLL)与 Kotlin/Native一起使用的更详细的分步说明。

https://jonnyzzz.com/blog/2018/10/29/kn-libcurl-windows/

于 2018-10-29T21:22:41.663 回答
3

您需要安装MSYS2,然后在 MSYS2 控制台中安装 libcurl:

$ pacman -S mingw-w64-x86_64-curl

https://github.com/JetBrains/kotlin-native/pull/1499

于 2018-10-18T11:30:40.720 回答
2

我不认为它现在被覆盖在某个地方。这个想法仍然是一样的,你应该能够让它发挥作用。第一步是从https://curl.haxx.se/libcurl/下载并在本地构建 libcurl 。有关于如何构建它的说明和文档。我确实建议选择 Windows 自己的 SSL 实现。

完成构建后,您将同时拥有包含和库。请注意,在 Windows 上,您将始终拥有一个静态库。即使您将 curl 构建为动态库 (DLL),您也会生成一个用于链接的静态库。DLL 更易于构建和使用。真正的静态库更好,因为您的 Kotlin/Native 程序二进制文件中没有依赖项。此时,教程说明应该可以工作。

于 2018-10-18T10:56:24.317 回答
2

对于 Windows,如果您只需要基本的 HTTP 通信,您也可以尝试 WinINet API,它是 Windows 的一部分,因此不需要依赖。使用 libcurl 库没有任何麻烦。

请参阅我如何将 WinInet API 与 Kotlin MPP 一起使用的示例:https ://github.com/localazy/kotlin-mpp-wininet

对于 macOS 和 Linux,无需手动使用 libcurl,只需使用 ktor 客户端:https ://ktor.io/clients/index.html

于 2020-09-04T22:24:49.053 回答
-2

我也在学习 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/

于 2020-11-27T19:47:01.010 回答