代码之家  ›  专栏  ›  技术社区  ›  Alec Gorge

在exe中编译静态库

  •  3
  • Alec Gorge  · 技术社区  · 16 年前

    我有一个dll和一个exe,这两个我都有可以访问的源代码。

    对于 DLL .lib lib 在我的C++ VC++ 2008项目下的链接器& GT;输入>其他依赖项。我将exe的编译模式设置为/MT(多线程)。

    所有的东西都可以编译,但是当我尝试运行exe时,它会请求dll!就我(有限的)理解而言,这不应该发生。

    2 回复  |  直到 16 年前
        1
  •  7
  •   Timo Geusch    16 年前

    您所指的“编译模式”设置是与您生成的任何库或可执行文件链接的运行时库的设置。

    如果您的项目被设置为生成DLL(检查项目主页面),那么无论您在运行时库设置中输入什么,它都会生成DLL。我 认为

    完成此操作后,请确保可执行文件和库项目具有相同的运行时库设置(您引用的/MT开关),否则,如果链接器尝试在同一可执行文件中匹配两个不同的运行时库,您将收到大量奇怪的错误消息。

        2
  •  3
  •   Drew Hall    16 年前

    使用“静态”DLL创建的.lib文件只是一个导入库,用于处理与库中所有符号的自动动态链接。DLL本身(即.DLL文件)仍然包含您期望的所有代码/符号等。

    除非您构建一个真正的静态库(即,包含所有符号&代码,而不仅仅是导入)。