#using,#include和'assembly references' - 它们是什么以及它们如何相关?

Run*_*tar 5 assemblies using c++-cli reference include

我想知道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
}
Run Code Online (Sandbox Code Playgroud)

Pup*_*ppy 6

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

在本机C++中,您必须使用#include标头,并在适当的情况下链接到.lib文件(或GetProcAddress手动使用),Visual Studio也提供#importCOM库.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
}
Run Code Online (Sandbox Code Playgroud)

如果您还不知道C++和.NET代码,并且/或者您没有尝试将两者链接在一起,则不建议使用C++/CLI.