Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
link.exe bemenetként fogadja el az MSIL-.obj és .netmodule fájlokat. A csatoló által létrehozott kimeneti fájl egy szerelvény vagy egy .netmodule fájl, amely nem függ futásidejű függőséggel a csatolóhoz bevitt .obj vagy .netmodule fájloktól.
Megjegyzések
.netmodule fájlokat az MSVC fordító hozza létre /LN (MSIL modul létrehozása) vagy a /NOASSEMBLY (MSIL-modul létrehozása).
.obj fájlok mindig C++ fordításban jönnek létre. Más Visual Studio-fordítók esetén használja a /target:module fordító lehetőséget.
A .netmodulelétrehozó C++ fordításból át kell adni a .obj fájlt. A .netmodule való továbbítás már nem támogatott, mert a /clr:pure és /clr:safe fordítóbeállítások elavultak a Visual Studio 2015-ben, és a Visual Studio 2017-ben és újabb verzióiban nem támogatottak.
A hivatkozás parancssorból való meghívásáról további információt Linker parancssori szintaxisa és Az MSVC-eszközkészlet használata a parancssorból.
Ha .netmodule vagy .dll fájlt ad át az MSVC fordítója által /clr lefordított hivatkozáskezelőnek, hivatkozáskezelő hibát okozhat. További információ: Formátum kiválasztása.netmodule bemeneti fájlok.
A linker a natív .obj fájlokat és az MSIL .obj/clrlefordított fájlokat is elfogadja. Vegyes .obj fájlokat is átadhat ugyanabban a buildben. Az eredményként kapott kimeneti fájl alapértelmezett ellenőrizhetősége megegyezik a legalacsonyabb bemeneti modul ellenőrizhetőségével.
Módosíthatja a két vagy több szerelvényből álló alkalmazásokat, hogy egy szerelvényben szerepeljenek. Hajtsa újra a szerelvények forrásait, majd kapcsolja össze a .obj fájlokat vagy .netmodule fájlokat egyetlen szerelvény létrehozásához.
Megadhat egy belépési pontot /ENTRY (Belépési pont szimbólum) használatával végrehajtható rendszerkép létrehozásakor.
Ha MSIL-
MSIL .obj vagy .netmodule fájlok is továbbíthatók cl.exe.
A bemeneti MSIL-.obj vagy .netmodule fájlok nem tartalmazhatnak beágyazott erőforrásokat. Erőforrások beágyazása kimeneti modulba vagy szerelvényfájlba a /ASSEMBLYRESOURCE (Felügyelt erőforrás beágyazása) linker beállítással. Vagy használja a /resource fordítót más Visual Studio-fordítókban.
Példák
A C++ kódban a megfelelő trycatch blokkja nemSystem kivétel esetén lesz meghívva. Alapértelmezés szerint azonban a CLR nemSystem kivételeket csomagol RuntimeWrappedException. Ha C++ és nem C++ modulból hoz létre szerelvényt, és azt szeretné, hogy a megfelelő try záradékból meghívjon egy C++ kódban lévő catch blokkot, amikor a try blokk nemSystem kivételt eredményez, hozzá kell adnia a [assembly:System::Runtime::CompilerServices::RuntimeCompatibility(WrapNonExceptionThrows=false)] attribútumot a nem C++ modulok forráskódjába.
// MSIL_linking.cpp
// compile with: /c /clr
value struct V {};
ref struct MCPP {
static void Test() {
try {
throw (gcnew V);
}
catch (V ^) {
System::Console::WriteLine("caught non System exception in C++ source code file");
}
}
};
/*
int main() {
MCPP::Test();
}
*/
A WrapNonExceptionThrows attribútum Boolean értékének módosításával módosíthatja a C++ kód azon képességét, hogy nemSystem kivételt észleljen.
// MSIL_linking_2.cs
// compile with: /target:module /addmodule:MSIL_linking.obj
// post-build command: link /LTCG MSIL_linking.obj MSIL_linking_2.netmodule /entry:MLinkTest.Main /out:MSIL_linking_2.exe /subsystem:console
using System.Runtime.CompilerServices;
// enable non System exceptions
[assembly:RuntimeCompatibility(WrapNonExceptionThrows=false)]
class MLinkTest {
public static void Main() {
try {
MCPP.Test();
}
catch (RuntimeWrappedException) {
System.Console.WriteLine("caught a wrapped exception in C#");
}
}
}
caught non System exception in C++ source code file