【问题标题】:creating a DLL in Visual Studio 2005在 Visual Studio 2005 中创建 DLL
【发布时间】:2009-07-10 04:58:44
【问题描述】:
我正在开发一个 C++ 库,我想将它传递给我的团队。该库只有一个带有一堆方法的类。
所以,我开发了类定义文件(X.cpp)和相应的类声明文件(X.h)。
这是我的问题--
在 Visual Studio 2005 中,什么是将这个库构建为 DLL 的最直接的方法,这样我就可以得到以下文件:
X.lib :我可以将其传递给我的团队,以便他们可以链接到我的库
X.dll :我可以将其传递给我的团队以供运行时使用
我应该采用静态库方式而不是 DLL 吗?如果是这样,我该如何在 Visual Studio 2005 中执行此操作?这会给我一个 X.lib 文件,我可以将其传递给我的团队吗?
非常欢迎任何解释或参考。
非常感谢。
【问题讨论】:
标签:
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