คำสั่ง Linker ล้มเหลวด้วยรหัสทางออก 1 (ใช้ -v เพื่อดูการเรียกใช้), Xcode 8, Swift 3


114

ฉันไม่สามารถกำจัดข้อผิดพลาดนี้ได้!

ฉันได้ลองทำสิ่งต่างๆมากมายเช่นการล้างข้อมูลที่ได้รับ (ค่ากำหนด -> สถานที่ -> คลิกลูกศรสีเทาเพื่อเปิดโฟลเดอร์ Derived Data ใน Finder-> คลิกขวาย้ายไปที่ถังขยะ) ทำความสะอาดโครงการ (CMD + Shift + K หรือผลิตภัณฑ์ -> Clean), อัปเดตคาร์เธจและการอ้างอิง, ตรวจสอบคำตอบอื่น ๆ บน StackOverflow (ส่วนใหญ่เป็นการปรับค่าในการตั้งค่า / เฟสการสร้าง) และปรับแอปจาก github เป็นต้น

โครงการเดียวกันนี้ทำงานบนคอมพิวเตอร์ของผู้ทำงานร่วมกัน ..

แก้ไข: จากคำตอบยอดนิยมในปัจจุบันฉันสามารถแก้ไขข้อบกพร่องได้อีกเล็กน้อย ... ฉันยังไม่แน่ใจว่าจะแก้ไขอย่างไร ดูเหมือนว่าฉันจะมีอะไรบางอย่างในโปรเจ็กต์สองครั้ง? ฉันมองแล้วไม่พบสิ่งใดปรากฏขึ้นสองครั้ง!

นี่คือภาพของบันทึก:



ทำไมคุณถึงยอมรับคำตอบอันดับต้น ๆ หากไม่สามารถแก้ปัญหาของคุณได้ ... ?
benomatis

คำตอบ:


160

วันนี้ฉันประสบปัญหาเดียวกันใน xcode 8 เวอร์ชัน 8.3.2

คลิกขวาที่ปัญหา -> เปิดเผยในบันทึก

ใส่คำอธิบายภาพที่นี่

จากนั้นคุณจะตรวจสอบได้ว่าอะไรเป็นสาเหตุของปัญหานั้น

ใส่คำอธิบายภาพที่นี่


ขอบคุณสำหรับสิ่งนั้น! นี่คือสิ่งที่ฉันได้รับในบันทึก: imgur.com/vFkNJzZ
Jake Dobson

ในที่สุดฉันก็แก้ปัญหานี้ได้ คุณช่วยนำทางฉันไปในทิศทางที่ถูกต้อง! มันแย่มากที่ Xcode ไม่เปิดเผยบันทึกเมื่อคลิกที่ ... อาจช่วยฉันได้บ้าง!
Jake Dobson

ขอขอบคุณสำหรับเคล็ดลับเปิดเผยในบันทึก ฉันไม่รู้ว่าสามารถใช้ได้
KarenAnne

1
@GhasemTabatabaei ตรวจสอบคำตอบของฉันด้านล่าง
Jake Dobson

81
เหตุใดจึงเป็นคำตอบที่ได้รับการยอมรับ ไม่ได้ตอบคำถามจริง ๆ แต่อาจช่วยในการแก้ปัญหาเท่านั้น
Tom Oakley

116

บางทีคุณอาจติดตั้งไฟล์พ็อดและคุณยังคงพยายามสร้างจาก.xcodeprojไฟล์แทนไฟล์.xcworkspace


4
ไม่ฉันใช้คาร์เธจด้วยเหตุผลนั้น นั่นเป็นคำตอบที่ถูกต้องซึ่งสามารถช่วยคนอื่น ๆ ที่มีข้อผิดพลาดเดียวกันนี้ได้!
Jake Dobson

1
ฉันเพิ่มรหัส m $ AppCenter ลงในโปรเจ็กต์ที่มีอยู่และจำเป็นต้องใช้ Pods ไม่รู้ว่าเกิดอะไรขึ้นและทำ.xcodeprojมานานกว่าหนึ่งปีแล้ว .. อะไรง่ายๆแค่นี้!
Dennis Smolek

1
การแก้ไขของฉันค่อนข้างเกี่ยวข้องกับเรื่องนี้ ฉันเพิ่งอัปเกรดการอ้างอิงบางอย่างและตอนนี้โครงการใช้ CocoaPods ก่อนหน้านี้ฉันมักจะทำงานจากไฟล์โครงการ ฉันเปิดไฟล์พื้นที่ทำงานซึ่งมีทั้งโปรเจ็กต์และพ็อดของฉันและทุกอย่างก็ทำงานได้ดี
Rozgonyi

40

สิ่งเดียวที่ได้ผลสำหรับฉันคือการวิ่งpod deintegrateและpod install


คำถามได้รับคำตอบแล้ว หากคุณเห็นความคิดเห็นของฉันด้านล่างแสดงว่าฉันได้นำเข้าไฟล์ที่นำเข้ามาในไฟล์นั้นแล้ว โปรเจ็กต์อยู่ในสภาพการแข่งขันที่พยายามอ้างอิงไฟล์สองครั้ง
Jake Dobson

ตกลงใช่มัน jsut ไม่ได้ผลสำหรับฉันและเมื่อฉัน googled มันคือสิ่งที่เกิดขึ้นฉันจึงคิดว่า id พยายามช่วยคนอื่น ... ฉันเพิ่งใหม่กับสิ่งนี้ฉันควรลบคำตอบหรือไม่
Charles Harring

ฉันเดาว่าไม่เพราะมันมีอยู่แล้ว ฉันแน่ใจว่าใครบางคนอาจเห็นว่ามีประโยชน์ แอพที่ฉันใช้ไม่ได้ใช้ cocoapods ประเด็นคือข้อผิดพลาดนี้เกิดขึ้นบ่อยมากและให้ข้อมูลเพียงเล็กน้อยเกี่ยวกับตัวมันเอง มีโซลูชันมากมายขึ้นอยู่กับแต่ละโครงการ
Jake Dobson

ช่วยประหยัดวันของฉัน! ขอให้พระเจ้าคุ้มครอง!
user2612604

19

คุณลองทำความสะอาดหรือยัง? cmd + shift + k


8
โอ้ยยย.. หลายครั้ง!
Jake Dobson

นั่นคือทั้งหมดที่ฉันได้รับอย่างแท้จริง ... การคลิกที่ข้อความไม่ได้ส่งข้อมูลเพิ่มเติมหรือตำแหน่งของไฟล์ที่เกิดขึ้นเหมือนกับข้อผิดพลาดส่วนใหญ่ ไม่มีอะไรในคอนโซลมันไม่สามารถเรียกใช้แอพได้เนื่องจากข้อผิดพลาดนี้ ..
Jake Dobson

FWIW ฉันพบปัญหานี้เมื่อไม่นานมานี้เมื่อสร้างด้วย SDK และคำแนะนำของ @ FranciscoPerez ก็เป็นเคล็ดลับ แนะนำเป็นขั้นตอนแรกอย่างแน่นอนก่อนที่คุณจะเจาะลึกลงไปในการแก้ไขข้อบกพร่อง
riastrad

9

โอเค ... นี่คือสิ่งที่แก้ปัญหาของฉัน ...

ในไฟล์ผู้แทนแอป:

#import "AppDelegate.h"
#import "DarkSkyAPI.h"
//#import "Credentials.h"

ฉันนำเข้า Credentials.h แล้วในไฟล์ DarkSkyAPI.m ในโปรเจ็กต์ของฉัน การแสดงความคิดเห็นเกี่ยวกับการนำเข้าเพิ่มเติมทำให้ข้อผิดพลาดหายไป!

บางสิ่งที่ต้องพูดถึงและอาจช่วยใครก็ได้ในอนาคต คำตอบของ @ umairqureshi_6 ช่วยฉันตลอดกระบวนการ แต่ไม่ได้แก้ปัญหา เขาพาไปที่ที่ฉันสามารถขุดข้อมูลได้ ฉันยังคงเห็นไฟล์ AppDelegate และ DarkSkyAPI ปรากฏขึ้นในบันทึกข้อผิดพลาดและข้อมูลที่ดึงมาจากไฟล์ข้อมูลรับรองทำให้เกิดข้อผิดพลาด ฉันรู้ว่ามันต้องอยู่ในหนึ่งใน 3 ไฟล์นี้ดังนั้นฉันจึงตรวจสอบการนำเข้าทันทีเพราะฉันจำได้ว่าได้ยินว่า. h นำเข้าทั้งหมดจากไฟล์. m ของมัน บูม!


6

ตอนนี้คำถามได้รับคำตอบแล้ว แต่ถ้าสิ่งนี้ช่วยให้ใครบางคนประหยัดเวลา: ฉันมีข้อผิดพลาดเดียวกัน ฉันตรวจสอบทุกอย่างเพื่อหาข้อผิดพลาดเล็ก ๆ น้อย ๆ จากด้านข้างของฉัน ฉันนำเข้าไฟล์ที่กำหนดเอง ManagedObject ข้อมูลหลักในตัวควบคุมมุมมองของโครงการของฉัน ฉันนำเข้าไฟล์. m โดยไม่ได้ตั้งใจแทนที่จะเป็น. hไฟล์ซึ่งทำให้เกิดสัญลักษณ์ซ้ำกันในข้อผิดพลาดทางสถาปัตยกรรม (คำสั่ง linker ล้มเหลว) เนื่องจากไฟล์. m ของคลาสคุณสมบัติของฉันนำเข้าไฟล์. h ของคลาสข้อมูลหลักและทำให้เกิดการนำเข้าซ้ำ

ดังนั้นเพียงตรวจสอบว่าคุณได้นำเข้าไฟล์ที่ถูกต้องหรือไม่ก่อนที่คุณจะลองใช้วิธีแก้ปัญหาหลาย ๆ วิธี!


ใช่ สิ่งนี้คล้ายกับปัญหาของฉันมาก ฉันมีการนำเข้าไฟล์เดียวกันสองครั้งในโครงการของฉัน แต่ฉันนำเข้า "fileA.h" ไปยัง "fileB.h" แต่จากนั้นนำเข้า "fileA.h" และ "fileB.h" ไปยัง "fileC.h" หรือบางอย่างตามบรรทัดเหล่านั้น ... แอปจึงขัดข้อง เพราะไม่รู้ว่าจะใช้ เป็นสถานที่ที่ดีอย่างแน่นอนในการแจ้งเตือนผู้อื่นให้ตรวจสอบการนำเข้าไฟล์อีกครั้ง!
Jake Dobson

6

วิธีแก้ปัญหามากมายดังกล่าวข้างต้น ไม่มีใครทำงานให้ฉัน (แต่โปรดลองข้างต้นก่อน)

เลือกโครงการ -> เลือกเป้าหมาย -> กรอบงานที่เชื่อมโยงและไลบรารี -> เพิ่มไลบรารีพ็อดทั้งหมด (ลบออกหากมีอยู่ในไบนารีที่ฝังไว้)

ตอนนี้ลบสิ่งเหล่านี้ออกจาก Framework Folder ใน file explorer ทางซ้ายของ xcode

สิ่งนี้ช่วยแก้ปัญหาของฉันได้


4

เลือกโครงการ -> สร้างเฟส -> เชื่อมโยงไบนารีกับไลบรารีและเพิ่มไลบรารีพ็อดทั้งหมด


3

ฉันมีปัญหาเดียวกันกับการใช้ Carthage สำหรับการอ้างอิง

เพียงไปที่ Select Project -> Build Settings -> Search for Enable Bitcode -> หากเลือกเป็น Yes ให้เลือก No

นั่นช่วยแก้ปัญหานี้ให้ฉันได้


2

ฉันมีปัญหาเดียวกัน

สาเหตุคือการที่ฉันประกาศตัวแปรทั่วโลกเหมือนกันใน 2 ไฟล์ ดังนั้นมันก็แสดงให้เห็นข้อผิดพลาดเดียวกันบอกว่า2 สัญลักษณ์ที่ซ้ำกัน

วิธีแก้ปัญหาคือการลบตัวแปรเหล่านั้น


1
ทำไมคุณถึงลบทั้งสองอย่างออกไม่ใช่แค่อันเดียว
Jake Dobson

2

สำหรับใครก็ตามที่มีปัญหากับ Flurry framework นี้ นี่คือสิ่งที่แก้ไขปัญหาของฉัน สำหรับฉันปัญหาคือฉันได้นำเข้าไฟล์ต่อไปนี้ แต่ไม่เคยใช้เลย "libFlurryTVOS_9.2.3" "libFlurryWatch_9.2.3"

ดังนั้นสิ่งที่ฉันต้องทำคือไปที่การตั้งค่าเป้าหมายโครงการและลบ 2 ไฟล์นี้ออกจากส่วน "กรอบงานที่เชื่อมโยงและไลบรารี" และปัญหาก็จะได้รับการแก้ไข


2

ในกรณีของฉันสาเหตุของข้อผิดพลาดคือไลบรารีซึ่งเชื่อมโยงสองครั้ง

ฉันใช้react-nativeมันจึงถูกเชื่อมโยงโดยอัตโนมัติโดยใช้react-native linkและด้วยตนเองใน xcode


2

ตรวจสอบให้แน่ใจว่าไฟล์ Find Implicit Dependenciesเลือกช่องทำเครื่องหมายแล้ว

(ผลิตภัณฑ์ -> โครงการ -> แก้ไขโครงการ -> สร้าง -> ค้นหาการพึ่งพาโดยนัย)


2

ฉันกำลังทดสอบกรอบ Sparkle กับ CocoaPods

น่าเศร้าที่ฉันใส่pod 'Sparkle', '~> 1.21'PodFile ผิดที่ ฉันวางไว้ใต้การทดสอบ (สำหรับการทดสอบหน่วย)

เมื่อวางไว้ในจุดที่ถูกต้องใน PodFile ทุกอย่างเรียบร้อยดี


1

ฉันต้องทำimport Foundation!

ฉันใช้ Kitura สำหรับฝั่งเซิร์ฟเวอร์ Swift และลืมสิ่งนี้ไปเรื่อย ๆ !


ฮ้า ใช่คุณจะต้องนำเข้า Foundation อย่างน้อยก่อนที่จะทำอะไร! ฉันมักจะนำเข้า UIKit แทน Foundation เพราะเกือบตลอดเวลาฉันจะต้องใช้คุณสมบัติของ UIKit และ UIKit ได้รับมรดกทุกอย่างจาก Foundation มาให้คุณ การนำเข้าด้วย Objc อาจเป็นเรื่องยุ่งยาก แต่ดูเหมือนว่าคุณใช้ Swift?
Jake Dobson

ใช่ฉันใช้ Swift ไฟล์ที่อยู่ในมือไม่แสดงปัญหาใด ๆ ของคอมไพเลอร์ แต่ในระหว่างที่เรียกใช้ไฟล์เท่านั้นฉันพบปัญหานี้!
น้ำผึ้ง

1
ใช่ฉันไม่คิดว่ามันจะตรวจสอบสิ่งนั้นจริงๆจนกระทั่งรันไทม์ฉันคิดผิด แต่ดูเหมือนว่าจะไม่มีปัญหาจนกว่าคุณจะพยายามเข้าถึงบางอย่างจาก Foundation ไม่พบการนำเข้าจากนั้นไม่สามารถดำเนินการต่อได้ - ผิดพลาด!
Jake Dobson

1

นี่คือปัญหาและวิธีแก้ปัญหาของฉัน:

ฉันลบสองไฟล์ออกจากซอร์สโค้ดโดยใช้โครงสร้างต้นทาง (ตัวควบคุมเวอร์ชัน) หลังจากใช้ความแตกต่างซึ่งมีสองคลาสที่ฉันลบออกไป Xcode ไม่ได้เพิ่มโดยอัตโนมัติ ฉันจึงได้รับข้อผิดพลาดตัวเชื่อมโยง

ฉันเพิ่มไฟล์ด้วยตนเองโดยคลิกขวาที่ชื่อกลุ่มและเลือก "เพิ่มไฟล์ลงใน" ตอนนี้ข้อผิดพลาดของฉันได้รับการแก้ไขแล้ว

หากใครประสบกับข้อผิดพลาดตัวเชื่อมโยงเกี่ยวกับไฟล์คลาสให้ลองเพิ่มด้วยตนเอง


1
ดูเหมือนว่าจะเป็นปัญหาเกี่ยวกับไฟล์ที่พวกเขาพยายามบอกใบ้ ... ไฟล์ที่อื่นไม่ได้ดึงข้อมูลจากกันและกันดูเหมือนจะพบได้ทั่วไปในหน้านี้ ขอบคุณสำหรับการตอบกลับของคุณ. หวังว่ามันจะช่วยใครบางคนบนถนน!
Jake Dobson

1

ไม่มีปัญหานี้เมื่อฉันสร้างและใช้งานบนอุปกรณ์ของฉันเอง มีปัญหากับเครื่องจำลองเท่านั้น ฉันเพิ่งรีสตาร์ทคอมพิวเตอร์และเรียกใช้งาน มันได้ผล


1

ในกรณีของฉันฉันเปลี่ยนTargetชื่อในของฉันPodfileดังนั้นมันจึงสร้างข้อผิดพลาดเดียวกันสำหรับฉัน

สารละลาย

เพียงแค่ไปproject-> Build Phase->Link Binary with librariesลบเก่าFrameWorksโดยคลิกที่minus button(-)และทำความสะอาดและเรียกใช้อีกครั้ง มันทำงานฉัน

ใส่คำอธิบายภาพที่นี่

.frameworkลบที่ไม่พึงประสงค์


1

คำตอบอื่น ๆ ไม่ได้ผลสำหรับฉันดังนั้นที่นี่ฉันจะแบ่งปันวิธีแก้ปัญหาของฉันในกรณีที่อาจช่วยคนอื่นได้:

ปัญหาของฉันคือฉันกำหนดค่า Podfile ของ XCode-Project สำหรับแพลตฟอร์มที่ไม่ถูกต้อง การเปลี่ยน "platform: ios" ที่จุดเริ่มต้นของ Podfile ของฉันเป็น "platform: macos" ทำให้ฉันสามารถกำจัดข้อผิดพลาดได้


0

ผมมีปัญหาเหมือนกัน. หากคุณกำลังตรวจสอบโปรเจ็กต์ github ใด ๆ แทนที่จะใช้ git clone ให้ใช้ git lfs clone เนื่องจากบางครั้งไฟล์ขนาดใหญ่บางไฟล์จะไม่ได้รับการโคลนอย่างถูกต้องโดยใช้ git เท่านั้น ตรวจสอบให้แน่ใจว่า bitcode ของคุณถูกปิดใช้งาน


หมายเหตุดี.. แต่โดยปกติคอนโซลจะแจ้งให้คุณทราบว่าไฟล์บางไฟล์มีขนาดใหญ่เกินไปที่จะโอน?
Jake Dobson

0

สำหรับฉันไฟล์ล็อกอัญมณีระบุ cocoapods เวอร์ชันเก่ากว่าที่ฉันติดตั้งไว้ ฉันต้องเปลี่ยนสาขาและเรียกใช้bundle exec pod installแทนpod install


0

ดูเหมือนว่าปัญหาจะแตกต่างกันไปสำหรับพวกเราส่วนใหญ่และข้อความแสดงข้อผิดพลาดมีข้อมูลที่เหมาะสม ในกรณีของการปรับใช้เป้าหมายถูกกำหนด10.13โดยexport MACOSX_DEPLOYMENT_TARGET=10.13เส้น 10.14แต่ผมทำงาน ดังนั้นฉันจึงต้องเปลี่ยน Deployment Target เป็น10.14ใน General> Deployment Info เพื่อให้สัญลักษณ์ที่เกี่ยวข้องกับ ITLibrary กลับมาใช้ได้อีกครั้ง

cd /Users/foo/src/scrobble/macos/itunes-scrobble
    export MACOSX_DEPLOYMENT_TARGET=10.13

... SNIP ...

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_ITLibMediaItem", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_ITLibPlaylist", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_ITLibrary", referenced from:
      objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

0

ในกรณีของฉันฉันกำลังผลิตผลิตภัณฑ์หลายชิ้นจากโครงการเดียวกัน สำหรับผลิตภัณฑ์อย่างใดอย่างหนึ่งmain.mไฟล์จะนำเข้าไฟล์ส่วนหัวจากโฟลเดอร์อื่นภายใต้โปรเจ็กต์เดียวกัน แต่ไฟล์นั้นไม่รวมอยู่ใน "แหล่งที่มาที่สอดคล้อง" ภายใต้ "Build Phase" สิ่งนี้ทำให้เกิดข้อผิดพลาดของตัวเชื่อมโยง

หลังจากเปรียบเทียบการตั้งค่า "ขั้นตอนการสร้าง" อย่างรอบคอบสำหรับผลิตภัณฑ์ที่สามารถสร้างได้สำเร็จฉันก็ตระหนักว่าไฟล์ .mไฟล์ของส่วนหัวจะต้องรวมอยู่ในรายการ "แหล่งที่มาที่รวบรวม" ปัญหาของฉันได้รับการแก้ไขแล้วหลังจากเพิ่มไฟล์นั้น แนบรูปภาพเพื่อความชัดเจน ต้องเพิ่มไฟล์ที่ไฮไลต์

ใส่คำอธิบายภาพที่นี่


-1

ฉันได้รับปัญหาเดียวกันในขณะที่สร้างโครงการ Ionic 1

ฉันสามารถแก้ปัญหาได้หลังจากลบไฟล์ CDVLogger.h & CDVLogger.m


ดูเหมือนว่าคุณไม่เคยต้องการไฟล์เหล่านั้นมาตั้งแต่แรก? ต้องมีการเรียกไฟล์ในไฟล์เหล่านั้นและไฟล์อื่น ๆ ด้วยทำให้โปรเจ็กต์สับสนและป้องกันไม่ให้รัน
Jake Dobson

-4

โอเคฉันมีปัญหาเดียวกันในวันนี้และเริ่ม googling มันเมื่อฉันเจอหัวข้อนี้ ฉันยังอ่านคำถามไม่จบเมื่อคำตอบโดนใจฉัน: ฉันประกาศคลาสที่มีตัวสร้างว่างเปล่า

class MyClass{
    MyClass();

    void func_one(){
    // code
    }

    void func_two(){
    // code
    }

    ~MyClass(){
        cout << "Deleting object" << endl;
     }
};

จากนั้นฉันก็คิดว่าทำไมไม่ยุติ (ไม่แน่ใจว่าฉันเลือกคำที่นี่ถูกต้องหรือเปล่า แต่ใครจะสน) ตัวสร้างชั้นเรียนของฉันที่มีเครื่องหมายปีกกา ( {}) ดังนั้นฉันจึง:

class MyClass{
    MyClass(){}

    void func_one(){
    // code
    }

    void func_two(){
    // code
    }

    ~MyClass(){
        cout << "Deleting object" << endl;
     }
};

ปัญหาหมดไปรหัสของฉันเริ่มทำงานได้อย่างสมบูรณ์

ฉันรู้แนวทางปฏิบัติที่ดีคือการตรวจสอบปัญหาและค้นหาสาเหตุที่แท้จริง แต่วิธีนี้ใช้ได้ผลสำหรับฉัน


ฉันไม่คิดว่าจะมีประโยชน์สำหรับเธรดนี้ ... ดูเหมือนว่าข้อผิดพลาดกำลังพยายามแก้ไขปัญหาเกี่ยวกับไฟล์เช่นการนำเข้าสิ่งเดียวกันในไฟล์แยกต่างหาก ฉันคิดว่ามันแปลกที่คุณจะได้รับข้อผิดพลาดนี้เพราะนี่เป็นข้อผิดพลาดเฉพาะของ Objective-C ...
Jake Dobson

ฉันได้รับข้อผิดพลาดนี้ใน C ++ ด้วย ข้อผิดพลาดของตัวเชื่อมโยงในกรณีของคุณอาจเป็นไปได้ว่าผู้เชื่อมโยงไม่พบรหัสสำหรับตัวสร้างของคุณ ฉันมีข้อผิดพลาดที่คล้ายกันกับฟังก์ชันที่ฉันเปลี่ยนชื่อ แต่เนื่องจาก Xcode 10 ไม่เปิดบันทึกตัวเชื่อมโยงด้วยตัวเองและฉันไม่รู้ว่าคุณสามารถคลิกขวาและ "เปิดเผยในบันทึก" ได้ฉันก็นิ่งงันไป นาทีที่พยายามค้นหาข้อผิดพลาด
Matt Parkins
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.