Skip to content

openkal-windows 0.1.4: the import libraries follow the object ABI, not the C library - #252

Merged
Sunrisepeak merged 1 commit into
mainfrom
idx/openkal-windows-0.1.4
Aug 24, 2026
Merged

openkal-windows 0.1.4: the import libraries follow the object ABI, not the C library#252
Sunrisepeak merged 1 commit into
mainfrom
idx/openkal-windows-0.1.4

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

0.1.3 用 env = "gnu" 给四个 Win32 导入库做条件。它们是本包所实现的平台接口的性质,与 C 库无关;env = "gnu" 当时在替「GNU/PE 对象 ABI 而非 MSVC」站岗——在传统栈上两者重合,所以写错和写对不可区分。

⚠️ 一旦 Windows 上出现第二个非 MSVC 的 env,条件立即落空,而落空的表现是链接期缺符号:

ld.lld: error: undefined symbol: __declspec(dllimport) MultiByteToWideChar

0.1.4 改为 not(env = "msvc"),直接表达它本来就想表达的事。上游 mcpplibs/openkal-windows#6 已合入。

镜像已核验:41393 bytes、sha256 60921c72…,CN 对象实际下载并 cmp 逐字节一致。

…t the C library

0.1.3 的条件是:

    [target.'cfg(all(windows, env = "gnu"))'.build]
    ldflags = ["-lntdll", "-lsynchronization", "-lshell32", "-lkernel32"]

这四个是 **Win32 导入库**,是本包所实现的平台接口的性质,与 C 库无关。
`env = "gnu"` 当时在替「GNU/PE 对象 ABI 而非 MSVC 的那套」站岗 ——
在传统栈上两者恰好重合,所以写错和写对不可区分。

⚠️ 一旦 Windows 上出现第二个非 MSVC 的 env(musl),条件立即落空,
而落空的表现是**链接期缺符号**,不是「配置没生效」这种一眼可见的形状:

    ld.lld: error: undefined symbol: __declspec(dllimport) MultiByteToWideChar

0.1.4 改为 `not(env = "msvc")` —— 直接表达它本来就想表达的那件事。

镜像已核验:41393 bytes,sha256 60921c72…,CN 对象实际下载并 cmp
与上游逐字节一致。
@Sunrisepeak
Sunrisepeak merged commit b8f0663 into main Aug 24, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant