ΠΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ ΠΈΠ»ΠΈ C++ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ°ΡΡΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ Π·Π°Π³Π°Π΄ΠΎΡΠ½ΡΠΌΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΎΡ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π² ΡΡΠΏΠΈΠΊ Π΄Π°ΠΆΠ΅ ΠΎΠΏΡΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ°. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΠΈ ΠΏΡΠ³Π°ΡΡΠΈΡ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° undefined reference to loop, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠ°Ρ Π² ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΡ ΡΡΠ°ΠΏΠ°Ρ , Π° ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΡΠΎΠ΄Ρ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ» Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
Π‘ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΊΡΠΎΠ΅ΡΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠ΅ΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΠΌ Π² Π΅Π΄ΠΈΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΎΠ³Π΄Π° Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΡΡΠ»ΠΊΠ° Π½Π° loop Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΠΈΠ΄Π΅Π» ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΎ ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ ΡΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠ° Π½Π΅ Π½Π°ΡΠ΅Π» Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, Π΄Π°Π½Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ-ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠ° ld (linker), ΡΡΠΎ ΡΠ°ΡΡΠΎ ΡΠ±ΠΈΠ²Π°Π΅Ρ Ρ ΡΠΎΠ»ΠΊΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΏΡΠΈΠ²ΡΠΊΡΠΈΡ Π²ΠΈΠ΄Π΅ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ ΠΊΠΎΠ΄Π°.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠΈΠ±ΠΊΠ° undefined reference Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π° ΡΡΠ°ΠΏΠ΅ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ, Π° Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ΅Π½, Π½ΠΎ Π½Π°ΡΡΡΠ΅Π½Π° ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ»Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅ΡΠΊΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠ΅Π±Π΅ ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π°. Π‘Π½Π°ΡΠ°Π»Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .o ΠΈΠ»ΠΈ .obj. ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π½Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Π²ΡΠΎΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅, ΠΊΠΎΠ³Π΄Π° Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊ ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π²ΡΠ΅ ΡΡΠΈ ΠΊΡΡΠΎΡΠΊΠΈ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ, Π²ΡΡΡΠ½ΡΠ΅ΡΡΡ, ΡΡΠΎ ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ loop Π½ΠΈΠ³Π΄Π΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, ΡΡΠΎ ΠΈ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΡΠ°ΡΠ°Π»ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΡΠ±ΠΎΡΠΊΠΈ.
ΠΠ½Π°Π»ΠΈΠ· ΠΏΡΠΈΡΠΈΠ½ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ
ΠΠ΅ΡΠ²ΠΎΠΉ ΠΈ ΡΠ°ΠΌΠΎΠΉ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΡΡΡΠ»ΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±Π°Π½Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅. Π§Π°ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π·Π°Π±ΡΠ²Π°ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΠ», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ loop, Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π² IDE ΠΈΠ»ΠΈ makefile. Π ΡΠ°ΠΊΠΈΡ
ΡΠΈΡΡΠ°ΡΠΈΡΡ
ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠΎΡΡΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ°ΠΉΠ», ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΉΠ΄Π΅Π½Π° Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ
, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ Π½Π° ΡΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅.
ΠΡΠΎΡΠΎΠΉ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ ΡΠΈΠ³Π½Π°ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. Π ΡΠ·ΡΠΊΠ΅ C++ ΠΈΠΌΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π°ΡΡΡΡ "name mangling", ΡΠΎ Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°ΠΆΠ΅ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ Π² ΡΠΈΠΏΠ°Ρ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ»ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° extern "C" ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠ²ΡΠ·Π°ΡΡ Π²ΡΠ·ΠΎΠ² Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ°ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠ° Π² ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ: Π΅ΡΠ»ΠΈ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° ΠΊΠ°ΠΊ void loop(), Π° Π² ΠΊΠΎΠ΄Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ void Loop(), Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Loop ΠΈ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ Π΅Ρ.
- π ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
- π ΠΠ΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΈΠ³Π½Π°ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²).
- π ΠΡΠΎΠ±Π»Π΅ΠΌΡ Ρ "name mangling" Π² C++ ΠΏΡΠΈ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° C ΠΈ C++.
- π ΠΠΏΠ΅ΡΠ°ΡΠΊΠΈ Π² Π½Π°Π·Π²Π°Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΊ ΡΠ΅Π³ΠΈΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π° ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ static Π² ΡΠ°ΠΉΠ»Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΠ½Π° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π° Π΄Π»Ρ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΠ° ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΡΠΎ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈ, Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ·Π²Π½Π΅, ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ static Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ±ΡΠ°ΡΡ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° Π²Π½ΡΡΡΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΠ° Π±Π΅Π· ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠΊΡΠΏΠΎΡΡΠ°.
ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ²Π°ΡΠ½ΡΡ ΠΏΡΠΈΡΠΈΠ½ ΠΎΡΠΈΠ±ΠΊΠΈ undefined reference ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°. ΠΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ GNU ld, ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡ ΠΎΠ΄: ΠΎΠ½ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΡΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΊΠ°Π·Π°Π½Π° ΠΏΠ΅ΡΠ΅Π΄ ΡΠ°ΠΉΠ»ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ, Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅, ΠΏΠΎΡΡΠΈΡΠ°Π², ΡΡΠΎ ΠΎΠ½Π° Π½Π΅ Π½ΡΠΆΠ½Π°.
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, Π³Π΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° libm.a ΡΡΠΎΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ main.c. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, Π½Π΅ Π²ΠΈΠ΄ΠΈΡ unresolved references (ΡΠ°ΠΊ ΠΊΠ°ΠΊ main Π΅ΡΠ΅ Π½Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½) ΠΈ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ Π΅Ρ. ΠΠΎΠ³Π΄Π° ΠΆΠ΅ Π΄ΠΎΡ
ΠΎΠ΄ΠΈΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π΄ΠΎ main.c, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡΡ
ΠΈΠ· ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ, Π½ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΆΠ΅ "Π·Π°Π±ΡΡΠ°". ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΏΠΎΡΠ»Π΅ Π²ΡΠ΅Ρ
ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π² Π½ΠΈΡ
Π½ΡΠΆΠ΄Π°ΡΡΡΡ.
ΠΠ»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ: Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ΄ΡΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ. ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΠΌ. ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (.so ΠΈΠ»ΠΈ .dll) ΠΌΠ΅Π½Π΅Π΅ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Ρ ΠΊ ΠΏΠΎΡΡΠ΄ΠΊΡ, Π½ΠΎ ΠΈ ΠΈΡ
ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅. ΠΠ°ΡΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° β ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΡΡΠ»ΠΊΠ° Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ GCC ΠΈΠ»ΠΈ Clang Π²ΡΠ΅Π³Π΄Π° ΡΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ ΡΠ»Π°Π³ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
-lm) Π² ΡΠ°ΠΌΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΏΠΎΡΠ»Π΅ Π²ΡΠ΅Ρ.oΡΠ°ΠΉΠ»ΠΎΠ².
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΡΠΊΠ°Π·Π°Π½Π° ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ°Π½ΠΎ. ΠΠΎ Π²ΡΠΎΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΊΠΎΡΡΠ΅ΠΊΡΠ΅Π½: ΡΠ½Π°ΡΠ°Π»Π° ΠΈΠ΄ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ Π²ΡΠ·ΠΎΠ²Ρ, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ².
# ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ: Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ
gcc -lm main.o -o program
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ: ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΏΠ΅ΡΠ΅Π΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ
gcc main.o -lm -o program
ΠΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ
Π Π°Π±ΠΎΡΠ° ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ (.a Π² Linux, .lib Π² Windows) ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΎΠΊ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΊΠΎΠ΄ ΠΈΠ· ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ±ΠΎΡΠΊΠΈ. ΠΡΠ»ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π½ΡΠΆΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ», ΠΎΠ½ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡ Π΅Π³ΠΎ Π² Π΄ΡΡΠ³ΠΈΡ
ΠΌΠ΅ΡΡΠ°Ρ
, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΠ²Π½ΠΎ, ΠΈ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ undefined reference.
Π§Π°ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» (.h) ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½, ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΠΈΠ΄ΠΈΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΎ ΡΠ°ΠΌΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π° ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΠΎΠΌ. ΠΡΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΠ»Π»ΡΠ·ΠΈΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π° Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΠ±ΠΎΡΠΊΠΈ. ΠΠ°ΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΡΡΡ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΡΠΊΠ°Π·Π°Π½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π· ΡΠ»Π°Π³ -L, Π° ΠΈΠΌΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ΅ΡΠ΅Π· ΡΠ»Π°Π³ -l (Π±Π΅Π· ΠΏΡΠ΅ΡΠΈΠΊΡΠ° lib ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ libfoo.a Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π°Π³ -lfoo.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Ρ ΠΊ ΠΏΠΎΡΡΠ΄ΠΊΡ?
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΠΎΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ. ΠΡΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ» Π½Π΅ Π½ΡΠΆΠ΅Π½ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΎΠ½ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ. ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΡΠ°Π½ΡΠ°ΠΉΠΌΠΎΠΌ ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΠΎΠ·ΠΆΠ΅, Π½ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ΅Π±ΡΡΡ ΡΡΡΠΎΠ³ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° "ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ -> ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅".
ΠΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ Π½ΡΠ°Π½ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. ΠΡΠ»ΠΈ Π΄Π²Π΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π°Π²ΠΈΡΡΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° (ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ), ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΈΡ
Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ. Π ΡΠ°ΠΊΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π²Π°ΠΆΠ΄Ρ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π°Π»Ρ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΠ°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ --start-group ΠΈ --end-group, ΡΡΠΎΠ±Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡ ΠΈΡ
Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π΄ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ
ΡΡΡΠ»ΠΎΠΊ.
| Π’ΠΈΠΏ ΡΠ°ΠΉΠ»Π° | Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ (Linux) | Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ (Windows) | ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ |
|---|---|---|---|
| ΠΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» | .o |
.obj |
Π’ΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² |
| Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° | .a |
.lib |
Π§ΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Π° ΠΊ ΠΏΠΎΡΡΠ΄ΠΊΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² |
| ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° | .so |
.dll |
Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΈΠ»ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ |
| ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» | .h |
.h |
ΠΠ΅ ΡΡΠ°ΡΡΠ²ΡΠ΅Ρ Π² Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ΅, ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ |
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ Ρ C++ ΠΈ name mangling
ΠΡΠΈ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π΅ Ρ ΡΠ·ΡΠΊΠ° Π‘ΠΈ Π½Π° C++ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ°ΡΡΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π»ΡΡ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΏΠ΅ΡΠ΅ΡΡΠ°Π΅Ρ Π»ΠΈΠ½ΠΊΠΎΠ²Π°ΡΡΡΡ. ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΎΠΌ name mangling, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ C++ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ loop(int) ΠΈ loop(double) Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΎ Π² ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, _Z4loopi ΠΈ _Z4loopd. ΠΡΠ»ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊ ΠΈΡΠ΅Ρ ΠΎΠ΄Π½ΠΎ ΠΈΠΌΡ, Π° Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ Π΄ΡΡΠ³ΠΎΠ΅, Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ°ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° C ΠΈ C++. ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ· C-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² C++ ΠΊΠΎΠ΄Π΅, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ C++ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ "ΠΈΡΠΏΠΎΡΡΠΈΡΡ" ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΆΠΈΠ΄Π°Ρ C++ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΈΠΌΡ ΠΎΡΡΠ°Π»ΠΎΡΡ ΠΎΠ±ΡΡΠ½ΡΠΌ. ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ extern "C", ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΡΠ΅ΡΠ°Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΡΡΠ°Π²Π»ΡΡ Π΅Π³ΠΎ ΡΠ°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ½ΠΎ Π±ΡΠ»ΠΎ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ C-ΠΊΠΎΠ΄Π΅.
βοΈ ΠΡΠΎΠ²Π΅ΡΠΊΠ° C++ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ (namespace). ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° Π²Π½ΡΡΡΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½, Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈΠΌΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΡΠ΅ΡΠΈΠΊΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°. ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ using-Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π½Π΅ Π½Π°ΠΉΠ΄Ρ Π΅Ρ ΡΠ°ΠΌ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ°Π±Π»ΠΎΠ½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΊΠ»Π°ΡΡΡ Π² C++ ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ. ΠΠΎΠ΄ ΡΠ°Π±Π»ΠΎΠ½Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²ΠΈΠ΄Π΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎ Π΅ΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡΡ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅. ΠΡΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ½Π΅ΡΠ΅Π½Π° Π² .cpp ΡΠ°ΠΉΠ», Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Π½Π°ΠΉΡΠΈ Π΅Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π° Π΄Π»Ρ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π½Π΅ Π±ΡΠ»Π° ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π°.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΡΠ»Π°Π³ΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΠ°
ΠΠ»Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠ±ΠΎΡΠΊΠΈ. Π€Π»Π°Π³ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π΄Π΅Π»ΡΡΡΡ Π½Π° Π΄Π²Π΅ Π³ΡΡΠΏΠΏΡ: ΡΠ΅, ΡΡΠΎ Π²Π»ΠΈΡΡΡ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ (-I Π΄Π»Ρ ΠΏΡΡΠ΅ΠΉ ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌ, -D Π΄Π»Ρ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ²), ΠΈ ΡΠ΅, ΡΡΠΎ Π²Π»ΠΈΡΡΡ Π½Π° Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΡ (-L Π΄Π»Ρ ΠΏΡΡΠ΅ΠΉ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ, -l Π΄Π»Ρ ΠΈΠΌΠ΅Π½ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ). ΠΡΠΈΠ±ΠΊΠ° undefined reference ΡΠ°ΡΡΠΎ ΡΠ΅ΡΠ°Π΅ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ missing ΡΠ»Π°Π³Π° -L, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ, Π³Π΄Π΅ ΠΈΡΠΊΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΠ°ΠΆΠ½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡ ΡΠ»Π°Π³ΠΈ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° (gcc, g++) ΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π»Ρ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΠ°. Π₯ΠΎΡΡ gcc ΡΠ°ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π΅ΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΈΠ»ΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½Ρ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΡΠΎΡΡ Π½Π΅ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΠΌΠ΅ΡΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π°Π³ -Wl, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΎΠΏΡΠΈΠΉ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΡ, ΠΌΠΈΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ.
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°ΠΉΠ»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ CMakeLists.txt ΠΈΠ»ΠΈ Makefile. ΠΡΠΈΠ±ΠΊΠ° Π² ΡΡΠΈΡ
ΡΠ°ΠΉΠ»Π°Ρ
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΡΠ΅Π»Π΅Π²ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠΈΠΌΠΏΡΠΎΠΌΠ°ΠΌ. Π CMake, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρ target_link_libraries.
ΠΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ
ΠΠ»Ρ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΡΠΈΠ½ ΠΎΡΠΈΠ±ΠΊΠΈ undefined reference to loop ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π°Π½Π°Π»ΠΈΠ·Π° Π±ΠΈΠ½Π°ΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ². Π£ΡΠΈΠ»ΠΈΡΠ° nm ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ
ΡΠ°ΠΉΠ»Π°Ρ
ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ
. Π‘ Π΅Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ Π»ΠΈ Π½ΡΠΆΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ. Π€Π»Π°Π³ -C ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Ρ nm ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅ΠΌΠ°Π½Π³Π»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π° C++ ΡΡΠ½ΠΊΡΠΈΠΉ, Π΄Π΅Π»Π°Ρ ΠΈΡ
ΡΠΈΡΠ°Π΅ΠΌΡΠΌΠΈ.
ΠΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΌΠΎΡΠ½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ objdump, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΡΡΡΠΊΡΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ². Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΡΠ΅Π±ΡΡΡΡΡ ΡΠ°ΠΉΠ»Ρ (undefined symbols) ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ. Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΎΠ² ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ
ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ
ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΠ°ΡΡΠΎ ΡΡΠ°Π·Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈΠ»ΠΈ Π½Π΅ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠ³ΡΡ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π² ΡΠ°Π·Π½ΡΡ Π²Π΅ΡΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ . ΠΡΠ΅Π³Π΄Π° ΡΠ²Π΅ΡΡΠΉΡΠ΅ΡΡ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ (man pages) Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ verbose ΡΠ΅ΠΆΠΈΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π°Π³Π° -v ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π²ΡΠ²Π΅Π΄Π΅Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ Π»ΠΎΠ³ Π²ΡΠ΅Ρ
Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ Π²ΡΠ·ΠΎΠ²Ρ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΠ°. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ
Π½Π° Π²Ρ
ΠΎΠ΄ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΡ, ΡΡΠΎ ΡΠ°ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π½Π°ΠΉΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ Π² ΡΠΊΡΠΈΠΏΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ Π²ΠΈΠ΄Π½ΠΎ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ Makefile.
Π§Π°ΡΡΠΎ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ (FAQ)
ΠΠΎΡΠ΅ΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° undefined reference, Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½?
ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½, ΠΎΡΠΈΠ±ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΈΠ·-Π·Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ (Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ), Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠΈΠ³Π½Π°ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ (ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²), ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° static ΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ name mangling Π² C++.
Π ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ error: undefined reference ΠΈ fatal error: .h file not found?
ΠΡΠΈΠ±ΠΊΠ° "file not found" Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΈΠ±ΠΊΠ° "undefined reference" Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π° ΡΡΠ°ΠΏΠ΅ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΠΈΠ΄ΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ (ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ) Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ .
ΠΠ°ΠΊ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ C Π² ΠΊΠΎΠ΄Π΅ C++?
ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠ½ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² C Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ extern "C" { #include <header.h> }. ΠΡΠΎ Π·Π°ΠΏΡΠ΅ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ C++ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΈΠΌΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠΉ (name mangling), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΡ Π½Π°ΠΉΡΠΈ ΠΈΡ
Π² C-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΏΠΎ ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΈΠΌΠ΅Π½Π°ΠΌ.
ΠΠΎΠΆΠ΅Ρ Π»ΠΈ Π°Π½ΡΠΈΠ²ΠΈΡΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ undefined reference?
Π ΡΠ΅Π΄ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π°Π½ΡΠΈΠ²ΠΈΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΡΠ±ΠΎΡΠΊΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΡΠΈΠ½Π° ΠΊΡΠΎΠ΅ΡΡΡ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ°ΠΏΠΊΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠ° Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.