c++ - 特定于平台的 lib 文件应如何命名?

标签 c++ dll shared-libraries static-libraries

我正在开发一个 C++ 项目,该项目生成其他团队使用的库。它有几种不同的口味:

  1. Win32 动态调试
  2. Win32 静态调试
  3. Win32 发布动态
  4. Win32 发布静态
  5. x64 动态调试
  6. x64 静态调试
  7. x64 发布动态
  8. x64 发布静态

我想知道关于如何命名 dll 的最佳智慧是什么以及不同命名约定的参数是什么。我是将库输出到不同的目录,还是在库的末尾附加一些字母以区分它们,还是其他什么?一个问题是,如果我使用目录,但不给所有的库起不同的名字,库的用户就会遇到问题,因为他们不小心使用了错误的库。这些担忧是否成立?

非常感谢。

最佳答案

使用 Microsoft 约定可能是个好主意。静态版本以“lib”为前缀。调试版本是后缀“d”。 64 位版本位于 amd64 子目录中。这不是最伟大的约定,但至少它很熟悉。

在 MSVC 中,您可以使用预定义的 _DLL 宏来检测用户是否选择了 CRT 的 DLL 版本。如果选择64位编译,则定义_WIN64宏。足以生成所需的#pragma comment(lib, "name") 指令。

关于c++ - 特定于平台的 lib 文件应如何命名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2469303/

相关文章:

windows - Delphi XE2 将 Application.MainForm.Handle 分配给 DLL 中的 Application.Handle

java - 为什么我的 JNA 结构映射会产生奇怪的字段值?

c - gcc 优化对共享库操作的影响

c++ - dynamic_cast 被引入 C++ 以破坏多态性?

python - Python 和 libstdc++ 的动态库问题

c++ - 无法使 C++ 程序正确计数

python - 如何使基于 PyO3 的库在 Python 版本之间更具可移植性?

linux - GNU 库 - 哪个库会有 _POSIX_OPEN_MAX 符号?

c++ - 模板类和在 C++ 中使用带有混合参数的重载构造函数

c++ - C++什么时候分配内存?