我正在将应用程序从 MySQL 迁移到 Postgres。当我尝试编译一个连接到数据库的简单应用程序时,我可以将它与 libpq.lib
链接并成功编译和执行。但是,这需要我在我的程序目录中包含大约 8 个 .dll
文件,这非常麻烦。有没有办法静态链接 libpq.lib
所以我不需要任何 .dll
文件?我在 Windows7 x64 上,我正试图构建一个适用于 x64 和 x86 窗口的架构独立应用程序。我正在使用 libpq 版本 8.4.9.1。谢谢!
更新:我尝试将 #define PQ_STATIC
和 -static
添加到链接器标志中。我还从源代码编译了 libpq.a
但以上都没有奏效。
最佳答案
Libpq 需要一些非常大的库,例如用于加密连接的 openssl、用于压缩的 zlib、用于字符集转换的 iconv 等。您必须将它们全部编译为静态库,然后将 libpq 编译为静态库,然后静态编译您的程序。我认为工作量太大而 yield 太少。
有一个商业工具 PgWare Alloy 4 ,可用于将 DLL 与 EXE 合并。我想它只是将所有合并的文件提取到临时目录,然后从该目录运行您的程序。
关于c++ - C++中libpq++ postgresql的静态链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8085460/