Поделиться через


Директивы #using (C++)

Будет импортировать метаданные в программу компилированную с /clr.

#using file [as_friend]

Параметры

  • file
    MSIL .dll (exe).netmodule или obj.Например:

    #using <MyComponent.dll>

  • as_friend
    Указывает, что все типы в file доступны.Дополнительные сведения см. в разделе Дружественные сборки (C++).

Заметки

file может быть файл MSIL, импорте для управляемых данных и управляемых конструкций.Если DLL-файл содержащий манифест сборки, то импортированы все .dlls, на которые имеются ссылки в манифесте и сборка построении перечислены файл в метаданных в качестве ссылки на сборку.

If file не содержит сборку (если file модуль) и если не планируется использовать информацию о типах из модуля в текущем приложении (сборки) можно просто указав, что модуль является частью сборки; используйте /ASSEMBLYMODULE.Типы в модуль затем имели бы в любое приложение, которое ссылается на сборку.

Альтернативы для использования #using/FU параметр компилятора.

Сборки exe, передаваемые #using компилироваться с /clr:safe OR /clr:pureили с любым другие компиляторы Visual Studio (Visual Basic или Visual c#, например).При попытке импортировать метаданные из сборки exe компилированной с /clr приведет к возникновению исключения при загрузке файла.

ПримечаниеПримечание

Компонент, который ссылается на #using можно выполнить с другоем версии файла импортированного во время компиляции, вызывать клиентское приложение дать непредвиденные результаты.

Чтобы компилятор мог распознавать тип в сборке (не в модуле), ему следует указать принудительно разрешать типы. Это можно сделать, например, определив экземпляр типа.Возможны и другие способы разрешения компилятором имен типов в сборке. Например, если тип наследуется от типа в сборке, его имя будет распознаваться компилятором.

Метаданные, созданные при импортировании из исходного кода, который использует __declspec (поток)семантика потока не упорствована в метаданных.Например, переменная, объявленная с __declspec (поток), компилироваться в программе, построение для среды CLR платформы .NET Framework, а затем импортировано с помощью #usingбольше не нет __declspec (поток) семантика для переменной.

Все импортированные типы (как управляемый, так и собственного) в файле, на который ссылается by #using доступны, но компилятор рассматривает собственные типы в качестве определения объявлений нет.

mscorlib.dll автоматически ссылается при компилировании с /clr.

Переменная среды LIBPATH указывает каталоги, которые будут производится, когда компилятор пытается разрешить имена файлов, передаваемые #using.

Компилятор будет выполнять поиск для ссылок на следующие пути:

  • Путь, указанный в #using выписка.

  • Текущий каталог.

  • Системный каталог платформы .NET Framework.

  • Каталоги, добавленные с /AI параметр компилятора.

  • Каталоги в переменной среды LIBPATH.

Пример

При построении сборки (c) и (B ссылке на сборку самого), выдающую ссылки на другую сборку (a), необходимо явно ссылаться на сборку a, если явно не будет использовать один из типов c в a.

// using_assembly_A.cpp
// compile with: /clr /LD
public ref class A {};

// using_assembly_B.cpp
// compile with: /clr /LD
#using "using_assembly_A.dll"
public ref class B {
public:
   void Test(A a) {}
   void Test() {}
};

В следующем образце ошибка компилятора для не будет ссылок на using_assembly_A.dll поскольку программа не использует заданные типы в using_assembly_A.cpp.

// using_assembly_C.cpp
// compile with: /clr
#using "using_assembly_B.dll"
int main() {
   B b;
   b.Test();
}

См. также

Ссылки

Директивы препроцессора