我正在尝试使用gorocksdb,它是一个 cgo 包,用于在 windows 上使用rocksdb 库。
- 我用 vcpkg 构建了rocksdb库,它给了我作为输出rocksdb-shared.dll。我将构建路径设置为我的 PATH。
- 我安装了 msys64 以获得 gcc
- 我已经设置
CGO_CFLAGS="-I/path/to/rocksdb/include"
和CGO_LDFLAGS="-L/path/to/rocksdb -lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy -llz4 -lzstd"
- 我已将Rocksdb-shared.dll 重命名为librocksdb.dll ,因为链接器需要 dll 以开头
lib
- 我执行
go get ...
命令 - 我运行我的测试 go 文件,我得到了错误
The programer can't start because rocksdb-shared.dll is missing ...
- 如果我将其重命名为rocksdb-shared.dll,则构建失败,因为链接器找不到librocksdb.dll
- 使其工作的唯一方法是在 PATH 中同时拥有rocksdb-shared.dll和librocksdb.dll
为什么可执行文件不断加载rocksdb-shared.dll?我在 cgo 包中没有找到对它的任何引用。