Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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
LINK környezeti változók
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óbanLINKdefiniá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áljaLIB, amikor a parancssorban vagy a beállításban/BASEmegadott objektumot, tárat vagy más fájlt keres. Emellett azLIBelérési utat használja egy.pdbobjektumban elnevezett fájl megkereséséhez. ALIBváltozó egy vagy több elérésiút-specifikációt tartalmazhat pontosvesszővel elválasztva. Egy elérési útnak a\libMicrosoft C++ telepítés alkönyvtárára kell mutatnia. -
PATH, ha az eszköznek futniaCVTRESkell, és nem találja a fájlt ugyanabban a könyvtárban, mintlink.exemaga. (link.exea fájl csatolásához.resszükségesCVTRES.)PATHa\binMicrosoft C++ telepítés alkönyvtárára kell mutatnia. -
TMPOMF vagy.resfá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