本机库 `kernel32` 被多个包链接到
Posted
技术标签:
【中文标题】本机库 `kernel32` 被多个包链接到【英文标题】:Native library `kernel32` is being linked to by more than one package 【发布时间】:2015-11-09 08:35:02 【问题描述】:我克隆并尝试构建MIO coroutines library,但它的依赖项似乎冲突:
native library `kernel32` is being linked to by more than one package, and can only be linked to by one package
kernel32-sys v0.2.0
kernel32-sys v0.1.4
似乎依赖 time
需要 kernel32
0.1.4,但另外两个依赖 fs2
和 memmap
需要 0.2.0。
我能做些什么来解决它,或者在这种情况下最好的解决方案就是提交错误报告?
在相关说明中,如果 repo 没有 Cargo.lock,这算作错误吗?我已经看到它建议始终将 Cargo.lock 添加到版本控制中以防止出现此类问题。
【问题讨论】:
我建议您在时间箱中发布一个问题,以确保它们更新到 0.2 和一个问题到 mio,因为他们使用的是wildcard dependency versions,这可能是导致此问题的原因 见:github.com/retep998/winapi-rs/issues/238 Cargo.lock 总是被添加到版本控制中 — This is absolutely not universally true。提交二进制文件和应用程序的锁定文件。不要不要为库提交它。 【参考方案1】:这是一个已知问题,已记录在 on the WinAPI bugtracker。
问题似乎在于维护者发布了一个新版本,将其从 v0.1.x 升级到 v0.2.x。由于某些包依赖(并且将继续依赖,直到它们更新)v0.1.x,Cargo 抱怨这两个依赖项不兼容,并拒绝将它们链接在一起。混乱随之而来。
根据上面提到的问题,现在应该纠正这个问题。
【讨论】:
以上是关于本机库 `kernel32` 被多个包链接到的主要内容,如果未能解决你的问题,请参考以下文章
Windows2008R2无法定位程序输入点于动态链接库kernel32.dll
无法定位程序输入点GetTickCount64与动态链接库KERNEL32.dll上
无法定位程序输入点 GetTickCount64 于动态链接库 KERNEL32.dll 上,怎么办