【问题标题】:#using, #include, and 'assembly references' -- what are they and how do they relate?#using、#include 和“程序集引用”——它们是什么以及它们之间的关系如何?
【发布时间】:2011-05-23 17:41:48
【问题描述】:

我想知道 Visual Studio、其他 IDE 和任何其他类型的情况(即根本没有 IDE)如何处理从外部引入代码。
起初我认为#includes是唯一的方法,要么将程序集文件放在Visual Studio程序集文件的指定目录中,然后使用格式将它们带入,要么将程序集文件放入项目中目录并使用“”格式将它们带入(即分别为和“”)。但是现在我用#using 指令提出了这篇文章末尾的示例(需要注意,它与没有'#' 的'using' 指令不同,用于命名空间)。此外,我还遇到了从“配置属性”对话框中在 Visual Studio 中添加程序集引用的情况。
那么,是否有人让我直接了解将汇编文件和其他代码添加到给定项目的所有细节?

--下面是让我困惑的例子--> 我的书中有这样一段话:

"...图结合C++ 2008代码 使用旧版 C 和本机 C++ 代码。它 还介绍了两个大会 您最常使用的参考文件 使用 C++ 2008,以及他们的 关联的命名空间。不像什么时候 你使用 Visual Studio 开发一个 项目,程序集参考文件 默认情况下不包括在内 编码单个源文件。因为 那,你必须编码#using指令 对于这些文件。 ……”

#include <stdio.h>
#include <iostream>
#using   <system.dll>
#using   <system.windows.forms.dll>

// Associated namespace directives

using namespace std;
using namespace System;
using namespace System::Windows::Forms;

void main()
{
    printf(            "Hello, Earth\n");  // from stdio.h
    cout <<            "Hello, Mars\n";    // from iostream
    Console::WriteLine("Hello, Jupiter");  // from system.dll
    MessageBox::Show  ("Hello, Saturn");   // from system.windows.forms.dll
}

【问题讨论】:

  • C++ 2008 是什么鬼?这是 C++/CLI,句号。无论这本书是什么(也许是那些蹩脚的“Visual C++ 2008”或其他什么),你都不应该读它。学习标准 C++,或学习 C#。 C++/CLI 唯一合理的用例是当您想要将标准 C++ 代码公开给 .NET 时。
  • 我对其他开发人员在这一点上的意见很感兴趣——C++/CLI 是否值得? (大声笑,我第一次发现“大喊大叫的角色”的用途)
  • C++/CLI 是在 C++ 和 .NET 世界之间进行互操作的绝佳工具。您可能有很多理由这样做,特别是利用带有 .NET 的遗留 C++ 代码库,或者有时,当 C++ 是可用于特定任务的最佳工具,但最终产品必须使用 .NET 时。但是,我坚信 C++/CLI 不是一种好的生产语言。微软或社区对 C# 的支持和动力要大得多。
  • 这是一个很好的问题。它回答了一个简单的问题,今天对我来说非常困难。这是我找到的第 5 篇文章。如何在 C++/CLI 源模块中包含 System。 (编译器告诉我 using 不适用于 System 或其他东西)我本可以回顾一下我编写的程序,但我不想在我总是难以记住的东西上作弊。

标签: include assemblies c++-cli reference using


【解决方案1】:

这不是本机 C++(通常简称为 C++),而是 C++/CLI,它实际上是一种 .NET 语言,旨在简化本机代码和托管代码之间的交互,因此可以同时使用两者。然而,它绝对不是 C++,尽管有意如此相似。程序集是 .NET 托管代码存储库。您使用#using 命令来使用它们。 #include 用于本机 C++ 头文件。您还应该能够从项目的属性中添加托管引用(即#using,但始终为您完成)。

在本机 C++ 中,您必须 #include 标头,如果合适,链接到 .lib 文件(或手动使用 GetProcAddress),Visual Studio 还为 COM 库提供 #import。 C++/CLI 还提供 #using 用于引入托管程序集。

void main()
{
    printf(            "Hello, Earth\n");  // C native code
    cout <<            "Hello, Mars\n";    // C++/CLI's wrapper on C++ Standard
    Console::WriteLine("Hello, Jupiter");  // .NET managed code
    MessageBox::Show  ("Hello, Saturn");   // A thin wrapper on WinAPI
}

如果您还不了解 C++ 和 .NET 代码,并且/或者您不想将两者联系在一起,则不建议使用 C++/CLI。

【讨论】:

  • 好的,所以; 1) #using 仅适用于 C++/CLI (.NET) 程序集。 2) #include 仅适用于头文件。 3)从项目属性中添加引用与#using相同,只是在后台实现。
  • 2 快速问题:.dll 文件是否仅适用于 .NET? - 这个 StackOverflow 帖子没有说明它只是 .NET:stackoverflow.com/questions/913691/…。只是为了确保 dll 是汇编文件,对吧?
  • @Gjera:.dll 是一个运行时库。有些是 .NET 程序集,有些是本机代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 1970-01-01
  • 2011-07-04
  • 2011-08-03
  • 2022-08-13
  • 1970-01-01
相关资源
最近更新 更多