【发布时间】:2020-02-20 03:08:06
【问题描述】:
我一直在尝试学习 nimlang,因为它似乎有很大的潜力可以简单地与 python 集成 - 但我是一个 Windows 人。我要编译的脚本很简单:
import zip/gzipfiles # Import zip package
block:
let vcf = newGzFileStream("test.txt.gz") # Open gzip file
var line: string # Declare line variable
# Loop over each line in the file
while not vcf.atEnd():
line = vcf.readLine()
echo line
使用我压缩过的名为“test.txt.gz”的测试文件:
this
is
gzipped
在windows linux子系统和普通linux上编译成功:
bub@bubs-surface-book-2:/mnt/c/Users/bubth/Development/nim$ nim c read_gzip.nim
Hint: used config file '/etc/nim.cfg' [Conf]
Hint: system [Processing]
Hint: read_gzip [Processing]
Hint: gzipfiles [Processing]
Hint: os [Processing]
Hint: strutils [Processing]
Hint: parseutils [Processing]
Hint: math [Processing]
Hint: algorithm [Processing]
Hint: times [Processing]
Hint: posix [Processing]
Hint: ospaths [Processing]
Hint: zlib [Processing]
Hint: streams [Processing]
CC: read_gzip
Hint: [Link]
Hint: operation successful (22504 lines compiled; 0.634 sec total; 35.035MiB peakmem; Debug Build) [SuccessX]
bub@bubs-surface-book-2:/mnt/c/Users/bubth/Development/nim$ ./read_gzip
asdf
1234
test
this
works
bub@bubs-surface-book-2:/mnt/c/Users/bubth/Development/nim$
但在 windows 上,它可以编译但不知道如何使用 zlib dll:
PS C:\Users\bubth\Development\nim> nim c .\read_gzip.nim
Hint: used config file 'C:\Users\bubth\scoop\apps\nim\current\config\nim.cfg' [Conf]
Hint: system [Processing]
Hint: widestrs [Processing]
Hint: io [Processing]
Hint: read_gzip [Processing]
Hint: gzipfiles [Processing]
Hint: os [Processing]
Hint: strutils [Processing]
Hint: parseutils [Processing]
Hint: math [Processing]
Hint: bitops [Processing]
Hint: macros [Processing]
Hint: algorithm [Processing]
Hint: unicode [Processing]
Hint: pathnorm [Processing]
Hint: osseps [Processing]
Hint: winlean [Processing]
Hint: dynlib [Processing]
Hint: times [Processing]
Hint: options [Processing]
Hint: typetraits [Processing]
Hint: time_t [Processing]
Hint: zlib [Processing]
Hint: streams [Processing]
Hint: [Link]
Hint: operation successful (37181 lines compiled; 0.921 sec total; 46.852MiB peakmem; Debug Build) [SuccessX]
PS C:\Users\bubth\Development\nim> .\read_gzip.exe
could not load: zlib1.dll
PS C:\Users\bubth\Development\nim>
我尝试通过https://github.com/microsoft/vcpkg 安装 zlib,但即使在浏览并成功“链接”了一些东西之后,它也没有找到库。我发誓我不傻,但我错过了什么?有没有什么特别的方法可以让 nimble 识别到这些包?
【问题讨论】:
-
您的 PATH 或 EXE 所在的本地目录中是否有 zlib1.dll?如果没有,您需要下载一个副本。如果这样做,则需要确保它与 EXE 相同。
-
我想我认为 vcpkg 会为我这样做,但我可能弄错了。我会试试看 - 这只是“windows 默认情况下不会将它们放在 PATH 中,但 linux 会”之类的事情吗?
-
尝试将副本添加到本地文件夹和 PATH 中,但仍然出现相同的错误。
-
你的 Nim 拱门是什么?尼姆-v。然后检查dll是否匹配。
-
看起来 zip 包假定您在 Windows 上安装了 dll,并且不包含它。为了解决这个问题,我必须手动下载“正确”的 .dll 文件并将其添加到我的路径中,之后它编译并运行得很好。