我正在将一个应用程序从 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 编译为静态库,然后将您的程序静态编译。我认为工作太多而收获太少。
有一个商业工具,PgWare Alloy 4 ,可用于将 DLL 与 EXE 合并。我想它只是将所有合并的文件提取到临时目录,然后从该目录运行您的程序。
关于c++ - C++ 中 libpq++ postgresql 的静态链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8085460/