在 Visual Studio C++ 中使用 DLL

Posted

技术标签:

【中文标题】在 Visual Studio C++ 中使用 DLL【英文标题】:Using a DLL in Visual Studio C++ 【发布时间】:2010-11-02 13:35:11 【问题描述】:

我有一个 DLL,我在 Visual C# 中一直在使用没有问题(只需添加引用并使用命名空间)。现在我正在尝试学习 C++,但我不明白您如何从 DLL 中引用命名空间。我可以右键单击一个项目并选择“引用”,然后从那里单击“添加新引用”,但这只是为我提供了一个空的“项目”窗口。我错过了什么?

【问题讨论】:

【参考方案1】:

在处理 DLL 引用时,C++ 与 C#/VB.Net 有很大的不同。在 C# 中,执行引用所需的只是一个 DLL,因为它包含描述内部结构的元数据。编译器可以读取这些信息,以便可以从另一个项目中使用它们。

C++ 在 DLL 中没有 C# 的元数据概念。相反,您必须以头文件的形式显式提供元数据。这些文件包含在您的 C++ 项目中,然后在运行时延迟加载 DLL。您实际上并没有在 C++ 中“添加引用”,而是包含一个头文件。

包含头文件后,您可以通过将其包含在 CPP 文件中来访问命名空间

using namespace SomeNamespace;

【讨论】:

@GMan,只有在头文件中完成才是真正的邪恶。我真的想说“在你的 CPP 文件中”,但我输入的是 C++。 'using namespace' 和其他一切一样,是一个可以正确使用或错误使用的工具。头文件中的“使用命名空间” - 不好。 C++ 文件中的“使用命名空间” - 通常可以。直到它引起问题,然后你才停止这样做。【参考方案2】:

首先,如果您尝试使用在 C# 应用程序中使用的相同 DLL,如果您使用的是纯原生 C++,则调用该 DLL 并不简单。问题是您在 C# 中引用的 DLL 依赖于 .NET 框架才能执行(它是一个“托管”DLL,就像所有 C#、VB.NET 和 C++/CLI 程序集一样)。有一种从 C++ 引用“托管”代码的简单方法,那就是创建一个托管 C++ 项目 (AKA C++/CLI)(从 Visual Studio 的 C++ 项目向导中的“CLR”部分中选择)。否则访问托管 DLL 的唯一方法是将其暴露给 COM 并使用 COM 访问对象。

【讨论】:

【参考方案3】:

编辑:如果您使用的是非托管 c++,前面的答案会更有帮助;由于 C# 引用,我假设您的目标是托管 C++。

“添加参考”对话框应该有一系列选项卡 - “项目”列出当前解决方案中的项目; .NET 列出了安装在 GAC 中的库,“浏览”让您可以自己查找 DLL。

如果您只想添加对 DLL 的引用,您应该可以使用“浏览”来完成。如果它是您拥有源的项目的输出,请将项目添加到解决方案中,它会出现在“项目”选项卡下。

如果这没有帮助,您使用的是哪个版本的 Visual Studio,以及您要使用的 DLL 是哪里/什么?

【讨论】:

以上是关于在 Visual Studio C++ 中使用 DLL的主要内容,如果未能解决你的问题,请参考以下文章

Sprite::create(“file.png”) 在 Cocos2d-x C++ Visual Studio 上返回 null

如何在Visual Studio 2010中使用C++“准”标准库 Boost 1.44.0

为啥visual studio2012在新建c++项目的时候会出现这个对话框?

我可以在 Visual Studio 2008 中使用 Visual Studio 6 编译的 C++ 静态库吗?

visual studio 怎么用

Visual Studio 与 C++ 简单图形用户界面笔记