1

我正在尝试使用 Wasm 数据库层创建 NodeJS 应用程序。我使用 Rust、Diesel 作为数据库驱动程序和wasm-packWebAssembly 编译器。

当我尝试使用 构建我的服务时wasm-pack,尝试链接libpq库失败。设置了PQ_LIB_DIR环境变量,并且diesel-cli没有任何问题,但是当我尝试编译我的服务时它失败并出现以下错误:

error: linking with `rust-lld` failed: exit code: 1
  = note: rust-lld: error: unable to find library -llibpq

我该如何解决?

我的系统:

  • 操作系统:Windows 10
  • :1.38.0
  • wasm 包:0.8.1
  • 柴油:1.4.0
  • PostgreSQL : 12
4

2 回答 2

1

无法从 WebAssembly 链接到系统库。您必须使用用纯 Rust 代码编写的实现才能使其工作。您还可以使用 JavaScript 库。但它总是必须在 JavaScript 运行时环境中。

于 2020-01-14T08:45:08.687 回答
0

libpq 在 postgreSQL 安装二进制文件中可用

例如,PosgreSQL Binary Download Site如果打开 zip 发行版postgresql-12.0-1-windows-x64-binaries.zip,您可以看到以下 2 个文件:

  • pgsql\lib\libpq.dll
  • pgsql\lib\libpq.lib

您需要指定 LD_LIBRARY_PATH 或者您可以在编译器参数中指定 -L 来告诉文件夹路径将自动选择这些文件

如果您使用了安装程序,安装文件夹中应该有相同的文件

你也可以参考这个 stackoverflow 链接How to I tell Rust 去哪里寻找静态库?

- 编辑 -

要在 Web assemble 发行版中组合 C 库,我们可以使用本指南 -
将现有 C 模块编译到 WebAssembly

于 2019-11-04T04:39:28.430 回答