【问题标题】:creating a DLL in Visual Studio 2005在 Visual Studio 2005 中创建 DLL
【发布时间】:2009-07-10 04:58:44
【问题描述】:

我正在开发一个 C++ 库,我想将它传递给我的团队。该库只有一个带有一堆方法的类。

所以,我开发了类定义文件(X.cpp)和相应的类声明文件(X.h)。

这是我的问题--

  1. 在 Visual Studio 2005 中,什么是将这个库构建为 DLL 的最直接的方法,这样我就可以得到以下文件: X.lib :我可以将其传递给我的团队,以便他们可以链接到我的库 X.dll :我可以将其传递给我的团队以供运行时使用

  2. 我应该采用静态库方式而不是 DLL 吗?如果是这样,我该如何在 Visual Studio 2005 中执行此操作?这会给我一个 X.lib 文件,我可以将其传递给我的团队吗?

非常欢迎任何解释或参考。

非常感谢。

【问题讨论】:

  • 您是否将配置类型设置为“动态库 (.dll)”?

标签: c++ visual-studio dll visual-c++-2005


【解决方案1】:

构建DLL最简单的方法是New->Project->Win32 Console Application。然后在对话框中选择 DLL 并选择“导出符号”。这将使用 .h 和 .cpp 文件合成一个 dll,这些文件演示了如何导出您的类。您可以摆脱这个 .h/.cpp 但首先导入您的类添加适当的#ifndef 语句。现在就 DLL 与静态库而言,如果它是一个单独的小类,那么它不会经常改变,你可能会更好地使用静态库,它简单、简洁,它不会添加另一个需要交付的依赖项与您的产品。如果 .cpp 文件中的代码经常更改(即函数实现),则 DLL 很好,因为您可以只换入新的 DLL。

【讨论】:

    【解决方案2】:

    根据您的描述,您似乎已经有一个 Visual C++ 项目(如果我错了,请纠正我)。如果是这样,当您进入项目属性时,在“常规”下,您可以找到“配置类型” - 根据需要将其切换为“静态库”或“动态库”。

    如果你选择“静态库”,那么你只会得到一个可以立即使用的 .lib 文件。

    如果您选择“动态库”,并从 DLL 中导出任何函数(例如,使用__declspec(dllexport) 标记它们),将自动生成导出 .lib。

    如果不知道您正在做什么的细节,很难判断哪个选项更可取。一般来说,我建议默认使用静态库,因为它通常已经足够好了,而且在处理 DLL(尤其是导出 C++ 符号的那些)时会有更多的陷阱。

    【讨论】:

    • 使用动态库应该记住可能的运行时库冲突。
    【解决方案3】:

    我认为,在大多数情况下,dll 是比静态库更好的选择,因为当您分发新版本的库时,您的团队不必重新编译他们的代码。

    【讨论】:

      【解决方案4】:

      我有时也会为此苦苦挣扎。因为我在 C++ 项目属性中找不到难以捉摸的设置。所以我决定将其记为 a blog post

      HTH

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-27
        • 1970-01-01
        • 2011-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多