Megosztás:


Linking

Egy C++ projektben a csatolási lépés azután történik, hogy a fordító lefordítja a forráskódot objektumfájlokba (*.obj). A linker (link.exe) egyetlen végrehajtható fájlba egyesíti az objektumfájlokat.

A Linker beállításai a Visual Studióban vagy azon kívül is beállíthatók. A Visual Studióban úgy érheti el a hivatkozási beállításokat, hogy a jobb gombbal egy projektcsomópontra kattint a Megoldáskezelőben , és a Tulajdonságok lehetőséget választja a tulajdonságlapok megjelenítéséhez. A csomópont kibontásához és az összes beállítás megtekintéséhez válassza a Bal oldali panel Linker elemét.

Linker parancssori szintaxisa

Ha a linkert a Visual Studión kívül futtatja, a bemenetet egy vagy több módon is megadhatja:

  • A parancssorban
  • Parancsfájlok használata
  • Környezeti változókban

A linker először a LINK környezeti változóban megadott beállításokat dolgozza fel, majd a parancssorban és a parancsfájlokban megadott sorrendben adja meg a beállításokat. Ha egy beállítás különböző argumentumokkal ismétlődik, az utolsó feldolgozott érték elsőbbséget élvez.

A beállítások a teljes buildre vonatkoznak; adott bemeneti fájlokra nem lehet beállításokat alkalmazni.

A futtatáshoz link.exehasználja a következő parancs szintaxisát:

link arguments

A arguments belefoglalási beállítások és fájlnevek tetszőleges sorrendben megadhatók. A beállításokat először a rendszer dolgozza fel, majd a fájlokat. Argumentumok elválasztásához használjon egy vagy több szóközt vagy lapot.

Megjegyzés:

Ezt az eszközt csak a Visual Studio parancssorából indíthatja el. Nem indítható el a rendszer parancssorából vagy a Fájlkezelőből.

Parancssor

A parancssorban egy lehetőségválasztó, egy kötőjel (-) vagy egy perjel (/) áll, amelyet a beállítás neve követ. A beállításnevek nem rövidíthetők. Egyes beállítások egy kettőspont (:) után megadott argumentumot használnak. A beállításspecifikációban nem engedélyezett szóközök vagy fülek, kivéve a beállítás egy idézett sztringjében /COMMENT . Numerikus argumentumok megadása decimális vagy C nyelvű jelölésben. A beállításnevek és a kulcsszó- vagy fájlnévargumentumok nem megkülönböztetik a kis- és nagybetűket, az argumentumként megadott azonosítók azonban megkülönböztetik a kis- és nagybetűket.

Ha át szeretne adni egy fájlt a hivatkozáskezelőnek, adja meg a fájlnevet a parancssorban a link.exe parancs után. Megadhat egy abszolút vagy relatív elérési utat a fájlnévvel, és használhat helyettesítő karaktereket a fájlnévben. Ha kihagyja a pont (.) és a fájlnévkiterjesztést, a csatoló feltételezi, hogy a fájl megkereséséhez .obj bővítményt használ. A linker nem használ fájlnévkiterjesztéseket, és nem is használja a fájlok tartalmával kapcsolatos feltételezéseket. Megvizsgálja és ennek megfelelően dolgozza fel a fájl típusát.

Megjegyzés:

A különböző hivatkozásjelölők fájlnevet vesznek fel. Függetlenül attól, hogy relatív vagy abszolút elérési utat ad meg, ha a teljes fájlnév meghaladja MAX_PATH a (260 karakter) értéket, a csatolás sikertelen lehet, különösen a tárak keresése során. Ha ezt a problémát tapasztalja, próbálkozzon rövidebb útvonallal.

A csatolás nullát ad vissza a sikerességhez (hibák nélkül). Ellenkező esetben a hivatkozás leállítását jelző hibaszámot adja vissza. Ha például a linker generál LNK1104, a hivatkozás 1104-et ad vissza. Ennek megfelelően a hivatkozás által visszaadott legkisebb hibaszám 1000. A 128-os visszatérési érték az operációs rendszerrel vagy egy .config fájllal kapcsolatos konfigurációs problémát jelent; a rakodó nem töltődik be, link.exe vagy c2.dll.

Linker parancsfájlok

Parancssori argumentumokat link.exe parancsfájl formájában adhat át. Ha meg szeretne adni egy parancsfájlt a hivatkozáshoz, használja a következő szintaxist:

link @commandfile

A commandfile szövegfájl neve. Az at sign (@) és a fájlnév között nincs szabad hely vagy lap. Nincs alapértelmezett bővítmény; meg kell adnia a teljes fájlnevet, beleértve a bővítményt is. Helyettesítő karakterek nem használhatók. Megadhat egy abszolút vagy relatív elérési utat a fájlnévvel. Nem lehet hosszabb MAX_PATH (260 karakter). A hivatkozáskezelő nem használ környezeti változót a fájl kereséséhez.

A parancsfájlban az argumentumokat szóközök vagy lapok (a parancssorhoz hasonlóan) és újsoros karakterek választják el egymástól.

A parancssor egészét vagy egy részét megadhatja egy parancsfájlban. Egy parancsban több parancsfájl link.exe is használható. A hivatkozáskezelő úgy fogadja el a parancsfájl bemenetét, mintha a parancssor adott helyén lett volna megadva. A parancsfájlok nem ágyazhatók be. A hivatkozás a parancsfájlok tartalmát visszhangozza, hacsak nincs /NOLOGO megadva.

Example

Az alábbi parancs létrehoz egy DLL-t. Külön parancsfájlokban adja át az objektumfájlok és tárak nevét, és egy harmadik parancsfájlt használ a /EXPORTS beállítás specifikációja érdekében:

link /dll @objlist.txt @liblist.txt @exports.txt

A linker a következő környezeti változókat ismeri fel:

  • LINK és _LINK_, ha meg van adva. A csatoló a környezeti változóban LINK definiált beállításokat és argumentumokat előre felerősi, és feldolgozás előtt hozzáfűzi a _LINK_ környezeti változóban definiált beállításokat és argumentumokat a parancssori argumentumokhoz.
  • LIB, ha meg van adva. A hivatkozás az elérési utat használja LIB , amikor a parancssorban vagy a beállításban /BASE megadott objektumot, tárat vagy más fájlt keres. Emellett az LIB elérési utat használja egy .pdb objektumban elnevezett fájl megkereséséhez. A LIB változó egy vagy több elérésiút-specifikációt tartalmazhat pontosvesszővel elválasztva. Egy elérési útnak a \lib Microsoft C++ telepítés alkönyvtárára kell mutatnia.
  • PATH, ha az eszköznek futnia CVTRES kell, és nem találja a fájlt ugyanabban a könyvtárban, mint link.exe maga. (link.exea fájl csatolásához .res szükségesCVTRES.) PATH a \bin Microsoft C++ telepítés alkönyvtárára kell mutatnia.
  • TMPOMF vagy .res fájlok csatolásakor adjon meg egy könyvtárat.

Lásd még

C/C++ épület referenciája
MSVC Linker beállításai
Module-Definition (.def) fájlok
A Linker támogatása Delay-Loaded DLL-ekhez