【问题标题】:Remove the dependency of a program from certain DLL从某个 DLL 中删除程序的依赖关系
【发布时间】:2011-12-11 16:04:12
【问题描述】:

我正在用 C 语言编写一个应用程序,它使用 pcre3.dll 进行正则表达式。

问题是该程序在我尝试运行该程序的每台客户端计算机上都需要 pcre3.dll。

如何从 pcre3.dll 中删除我的应用程序的依赖关系?

【问题讨论】:

  • 可以获取静态库here,以-static.zip结尾的文件。
  • 不是骗子 IMO:另一个问题是针对 *nix 的,也没有提供任何具体说明。
  • +1 到@HostileFork,IMO 是重复的,只是平台不同。
  • @Jon 理论(虽然不一定是一种有效的实践)是注意到问题的共性会导致它们联系在一起。这引起了对旧问题的关注,因此它被更新为 wiki 风格,并成为更好的资源,而不是遭受可怕的网络腐烂。不过,约定仍在不断发展……blog.stackoverflow.com/2010/11/…

标签: c dll


【解决方案1】:

您需要静态链接到 pcre3,而不是像现在这样动态链接。

如果您从源代码编译 pcre,那么正如 NON-UNIX-USE 文件所述:

在 WINDOWS 环境中链接程序

如果你想静态链接一个程序到一个 PCRE 库 非 dll .a 文件的形式,您必须在之前定义 PCRE_STATIC 包括 pcre.h 或 pcrecpp.h,否则 pcre_malloc() 和 pcre_free() 导出的函数将被声明为 __declspec(dllimport), 产生不想要的结果。

【讨论】:

  • 非常感谢 Jon,虽然我使用了 Andre 在上面评论中给出的静态库。
猜你喜欢
  • 2011-04-29
  • 2011-12-05
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-29
  • 1970-01-01
相关资源
最近更新 更多