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

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

【问题讨论】:

    标签: c# c++ visual-studio dll namespaces


    【解决方案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 是哪里/什么?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-23
        • 2021-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-29
        相关资源
        最近更新 更多