目前有什么编程语言可以开发 dll/so 动态库?
除了 c/c++/c# 还有什么高级编程语言可以编写动态库的?
最好支持交叉编译。
go
zig
go +1
rust
rust, crate-type = ["cdylib"]rustup 装各平台工具链交叉编译
易语言 /狗头
我用的 cgo ,开发 sdk 很好用。
C 是最佳选择
go 可以的,我不少 so go 写的
rust
zig
c
vb 不能?
首先得明确你这个动态链接库的调用方是谁,不是所有动态链接库都支持不同语言调用的
C#
另外 .net 用 nativeaot 可以直接编译出动态链接库 .so/.dll/.dylib 以及静态链接库 .a/.lib 给其他程序用,所以其实除了 C# 之外,任何在 .net 上跑的支持 nativeaot 的语言都可以,比如 VB.NET 和 F# 。
据我所知还有 Delphi 、VB 。感觉你这个问题可以抽象为: stackoverflow.com/questions/54737429/what-programming-languages-can-one-use-to-create-shared-dynamic-libraries
基本上有提供 c 绑定的语言(运行时)都能做到吧?高级语言通常都能支持,就是难度有差异。
python 可以转成 pyd 或者 so
js 可以通过转换成 c 的方式间接支持,例如 quickjs 。Atwood's Law: Any application that can be written in JavaScript, will eventually be written in JavaScript.(•‿•)
Java 你也可以拿 JNI 包一个
理论上,能完整支持 c abi 的都可以tier 1: rust, zig完整的 C ABI 支持,完全的互操作性,交叉编译支持非常好, ps: zig 还带了一个 c/c++ 的前端,配合他自己的编译器后端 可以非常方便的实现 大部分 c/c++ 代码的交叉编译,而不用自己去搞定 c/c++ 的交叉编译环境,我用过他来作为 cgo 的 c 编译器,而不用去配置 ci 的 c++ 环境,也能在 mac 直接交叉编译输出 带有 cgo 的 linux elf ,推荐tier 2: c/c++/pascal/ etc...完整的 C ABI 支持,完全的互操作性,就是交叉编译麻烦tier 3: go用得很少,看文档描述,也能实现,但因为 c abi 存在栈拷贝的开销,大家都不是很满意,而且我有些疑问:在 存在 gc 的情况下,怎么保证 go 对象 export 给 c 之后的安全性?tier 4: 其他理论上 类似 python 这种,也可用 用一个 c wrapper 包一下来实现,python code -> c-wrapper -> python code [decompressed from shared library/dll]
看了下 go ,支持还是不错的,应该上调, tier 1.5 - tier 2 吧,不过确实有很多点需要自己去 take care 的
rust or zig... 目前推荐 rust...
go rust
现在 java 都可以编译为 dll
lua 不香吗?
可以把 go 对象 pin 住 pkg.go.dev/runtime#Pinner
aardii
aardio (勘误)
前面写过一篇“腾讯,竞争力 和 用户体验”批评了腾讯,于是在我的微博上和博客上收到了一些反对意见,基本上是说腾讯产品的用户体验做得很好,很方便,等等,还列举了N多的例子,以及说…
21 年卖掉一加 7Pro 之后再没玩过安卓刷机, 最近 iOS 越狱巨魔生态拉胯,常用的几个去广告插件基本都停更失效了 从二手网捡了一台日版 Pixel9Pro ,打算重归安…
假如告诉 100 年前的人如今人人都有能远隔万里就能面对面聊天的手机电脑,他们恐怕只会想到例如驿站被替代,邮差被替代之类的吧,就好像很多人觉得 AI 来了程序员就要失业了,但是…