【问题标题】:Windows static libraryWindows 静态库
【发布时间】:2023-03-18 07:49:01
【问题描述】:
我创建了一个静态库,我有 .lib 和标题。我的朋友尝试使用这个库,但是当他包含这个头文件时,他的编译器没有找到依赖项(其他库和头文件)。
是否可以在Visual Studio 2008 中创建一个不需要任何其他依赖项的静态库,只需编译器在这个signle lib 中添加所需的依赖项?
如果他不用安装winddk、wdk等就好了……
【问题讨论】:
标签:
visual-studio-2008
visual-c++
static-libraries
【解决方案1】:
是否可以在Visual Studio 2008 中创建一个不需要任何其他依赖项的静态库,只需编译器在此signle 库中添加所需的依赖项?
是的 .. microsoft visual c 编译器不支持构建零依赖的 exe/lib
零依赖 = 只需要系统库和 msvcrt.dll
Mingw 确实支持在链接器选项中使用 -static
将生成一个无依赖的构建需要 msvcrt.dll 运行时,它可以在任何系统上找到..
至于 microsoft 的 Visual c 编译器,它将需要相同版本的 c 运行时,例如 msvcrt9p.dll ,...
这迫使任何想要运行该应用程序的人下载开发中使用的相同版本的 .Net Runtime
【解决方案2】:
我认为您想在 .lib 文件中包含运行时库。
- 右键单击您的项目
- 转到配置属性 -> C/C++ -> 代码生成窗格
- 对于运行时库,选择多线程调试 (/MTd)
对发布配置也重复步骤 1-3。
.lib 文件的用户需要在他们的 .exe 中执行相同的操作。
您仍然需要分发 .lib 文件和 .h 文件。