Выбор формата входных файлов NETMODULE

В качестве .netmodule файла можно использовать MSIL-файл .obj (скомпилированный с/clr) . .obj файлы содержат метаданные и собственные символы. .netmodules содержит только метаданные.

Передайте MSIL-файл .obj любому другому компилятору Visual Studio с параметром компилятора /addmodule . Файл .obj становится частью результирующей сборки и должен быть отправлен в сборку. Например, Visual C# и Visual Basic имеют параметр компилятора /addmodule .

Note

В большинстве случаев необходимо передать компоновщику .obj файл из компиляции, создавшего модуль .net. .dll .netmodule Передача файла модуля MSIL компоновщику может привести к LNK1107.

.obj файлы, а также связанные .h с ними файлы, на которые ссылается #include в источнике, позволяют приложениям C++ использовать собственные типы в модуле. .netmodule В файле только управляемые типы можно использовать приложением C++. Если вы попытаетесь передать .obj файл в #using, сведения о собственных типах недоступны. Вместо этого #include .obj файл .h .

Другие компиляторы Visual Studio могут использовать только управляемые типы из модуля.

Используйте следующее руководство, чтобы определить, нужно ли использовать .netmodule файл в .obj качестве входных данных модуля в компоновщик MSVC:

  • Если вы создаете компилятор Visual Studio, отличный от Visual C++, создайте .netmodule и используйте .netmodule в качестве входных данных компоновщику.

  • Если вы используете компилятор MSVC для создания модулей и если модули используются для создания чего-либо другого, кроме библиотеки, используйте .obj файлы, созданные компилятором в качестве входных данных модуля компоновщику. Не используйте .netmodule файл в качестве входных данных.

  • Если модули используются для создания собственной библиотеки (не управляемой), используйте .obj файлы в качестве входных данных модуля компоновщику и создайте .lib файл библиотеки.

  • Если модули используются для создания управляемой библиотеки, и если все входные данные модуля компоновщика проверяются (создаются с /clr:safeпомощью), используйте .obj файлы в качестве входных данных модуля компоновщику и создайте .dll (сборку) или .netmodule (модуль) файл библиотеки.

  • Если модули используются для создания управляемой библиотеки, и если один или несколько модулей, входных данных компоновщика, создаются только с /clrпомощью файлов, используйте .obj файлы в качестве входных данных модуля компоновщика и создайте (сборку .dll ). Если вы хотите предоставить управляемые типы из библиотеки, а также хотите, чтобы приложения C++ потребляли собственные типы в библиотеке, библиотека состоит из .obj файлов для модулей компонентов библиотек. Вы также хотите отправить .h файлы для каждого модуля, чтобы они могли ссылаться на #include из исходного кода.

See also

NETMODULE-файлы в качестве входных файлов компоновщика