c++ - C++ 中 libpq++ postgresql 的静态链接

标签 c++ postgresql static static-libraries static-linking

我正在将一个应用程序从 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/

相关文章:

c++ - 针对给定问题的优化算法?

c++ - 生成 GPU 粒子

c++ - N**K 的位数

c++ - 是否有查询 EGL 错误字符串的标准方法?

Java如何在 map 中存储 setter/getter

sql - 记录 "old"尚未分配

sql - 范围值 SQL

postgresql - 来自 OSM 的路由网络

Java 抽象和接口(interface)

php - 在 PHP 的类内部使用时,traits 中的静态变量如何不失去其值(value)?