Многомодульные, или мультимодульные сборки
//ModuleWithoutManifestl.h using namespace System; // использование пространства имен Система; namespace ModuleWithoutManifestl // пространство имен ModuleWithoutManifestl { public _gc class ClassInModuleWithoutManifestl // класс сборщика мусора ClassInModuleWithoutManifestl { public: void SomeMethod(); }; } //ModuleWithoutManifestl.cpp finclude "stdafx.h" // имеет fusing <mscorlib.dll> using namespace System; // использование пространства имен Система; tinclude "ModuleWithoutManifestl.h" namespace ModuleWithoutManifestl // пространство имен ModuleWithoutManifestl { void CiassInModuleWithoutManifestl::SomeMethod() { Console::WriteLine( "CiassInModuleWithoutManifestl::SomeMethod"); } }
Опция компилятора /CLR:noAssembly указывает, что генерируется управляемый код, но декларация для сборки не генерируется. Опция компилятора /с подавляет автоматическое связывание, так как мы выполним его отдельной командой. Опция связывания /NOASSEMBLY также запрещает генерацию информации, относящейся к декларации. Поэтому чтобы сгенерировать первый модуль (динамически подключаемую библиотеку (DLL)) без декларации, в приглашении к вводу команды используются следующие две команды:
cl /CLR:noAssembly /с ModuleWithoutManifestl.срр link /NOASSEMBLY /DLL ModuleWithoutManifestl.obj
Если вы предпочитаете создавать модуль в Visual Studio .NET, сначала для проекта нужно изменить опции компилятора и компоновщика, чтобы не генерировать информацию, относящуюся к декларации, и не добавлять ее к модулю. Для установки опции компилятора /CLR: noAssembly в Visual Studio .NET сделайте следующее:
- Откройте диалоговое окно Property Pages (Страницы свойств) проекта. Чтобы сделать это, щелкните правой кнопкой мыши на узле ModuleWithoutManifestl, находящемся под узлом решения в окне Class View.
- Откройте папку Configuration Properties (Свойства конфигурации).
- Откройте папку C/C++.
- Щелкните на странице General (Общая), находящейся под папкой C/C++.
- Установите MetaData Only (/CLR: noAssembly) (Только метаданные) в качестве значения свойства Compile as managed (Компилировать как управляемый).
Объектный модуль, полученный в результате компиляции с такими параметрами, теперь нужно скомпоновать в Visual Studio .NET с опцией компоновщика /NOASSEMBLY. Эта опция компоновщика требует, чтобы вы установили также опцию компоновщика /NOENTRY. Чтобы внести эти изменения в проект, выполните следующее: - Откройте диалоговое окно Property Pages (Страницы свойств) проекта, если только оно не открыто.
- Откройте папку Configuration Properties (Свойства конфигурации), если она не открыта.
- Откройте папку Linker (Компоновщик).
- Щелкните на Advanced page (Дополнительная страница) под папкой Linker (Компоновщик).
- Установите Yes (/NOASSEMBLY) (Да) в качестве значения свойства Turn Off Assembly Generation (Выключить генерацию сборки).
- Оставаясь на странице Advanced page (Дополнительная страница), установите Yes (/NOENTRY) (Да) в качестве значения свойства Resource Only DLL (Динамически подключаемая библиотека (DLL) только с ресурсами).
Теперь можно создать проект обычным способом.