#using, #include и 'ссылки на сборки' - что это такое и как они связаны? - PullRequest
5 голосов
/ 23 мая 2011

Мне интересно, как Visual Studio, другие IDE и любые другие обстоятельства (т.е. вообще не IDE) обрабатывают ввод кода извне.
Сначала я думал, что #include - это единственный способ сделать это, либо поместив файлы сборки в назначенный каталог для файлов сборки 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 Ответ

6 голосов
/ 23 мая 2011

Это не нативный 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.

...