如何通过Wasm包将Rust-Wasm应用程序与libpq链接



我正在尝试创建一个带有Wasm数据库层的NodeJS应用程序。我使用Rust、Diesel作为数据库驱动程序,wasm-pack作为WebAssembly编译器。

当我尝试使用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
  • 废物包:0.8.1
  • 柴油:1.4.0
  • PostgreSQL:12

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

libpq在postgreSQL安装二进制中可用

例如,PosgreSQL二进制下载站点如果打开zip分发postgresql-12.0-1-windows-x64-binaries.zip,你可以看到这两个文件:

  • pgsqlliblibpq.dll
  • pgsqlliblibpq.lib

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

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

你也可以参考这个stackoverflow链接。我如何告诉Rust在哪里寻找静态库?

--编辑--

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

相关内容

  • 没有找到相关文章

最新更新