在 Visual Studio 2005 中创建 DLL
Posted
技术标签:
【中文标题】在 Visual Studio 2005 中创建 DLL【英文标题】:creating a DLL in Visual Studio 2005 【发布时间】: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 文件,我可以将其传递给我的团队吗?
非常欢迎任何解释或参考。
非常感谢。
【问题讨论】:
您是否将配置类型设置为“动态库 (.dll)”? 【参考方案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
【讨论】:
以上是关于在 Visual Studio 2005 中创建 DLL的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 2005 中使用 Manifest 文件以管理员权限运行应用程序?
在 Visual Studio 2013 中创建应用程序设置
如何在visual studio2008中创建,编译和运行C++程序,