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

时间:2011-05-23 17:41:48

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

我想知道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
}

1 个答案:

答案 0 :(得分:6)

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

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