【问题标题】:CMake Visual Studio linking executable with static libraryCMake Visual Studio 将可执行文件与静态库链接
【发布时间】:2010-12-07 10:58:00
【问题描述】:

我有一个非常简单的(目前只是一个 main.cpp)CMake C++ 项目,我正在尝试在 Mac OS X 和 Windows 上构建它。它依赖于 libgsasl,我已将其编译为两个平台上的静态库。

Mac OS X 在构建过程中没有任何问题,Windows 在构建过程中也不会抱怨并生成一个 EXE。当我尝试在 Windows 上运行 EXE 时,它会给出一条错误消息,指出应用程序无法运行,因为它找不到 libgsasl.dll。

我什至没有尝试链接动态库,只是静态库(.lib 版本)。我错过了什么吗?在 Visual Studio 中,看起来 gsasl.lib 文件已找到并包含在链接命令中。

【问题讨论】:

  • 你能发布 cl 用于构建 exe 的确切命令吗?
  • 你能发布你的 CMakeLists.txt 吗?

标签: c++ visual-c++ cmake static-libraries


【解决方案1】:

在 MS 工具链中,.lib 可以是静态库,也可以是实际 DLL 的导入库。

您可以使用 dumpbin 查看库的实际类型。有几种不同的方法来处理细节,但我更喜欢的技术是使用 /summary 选项。导入库将具有 .idata$n 节(其中 n 是整数),而静态库将具有 .text 节。

【讨论】:

    猜你喜欢
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    相关资源
    最近更新 更多