ข้ามไปที่เนื้อหาหลัก
การสนับสนุน
ลงชื่อเข้าใช้
ลงชื่อเข้าใช้ด้วย Microsoft
ลงชื่อเข้าใช้หรือสร้างบัญชี
สวัสดี
เลือกบัญชีอื่น
คุณมีหลายบัญชี
เลือกบัญชีที่คุณต้องการลงชื่อเข้าใช้

ข้อมูลการสนับสนุนภายในของ Microsoft

จุดบกพร่อง #: 101959 (Visual Studio)

สรุป

เมื่อคุณสร้าง DLL โดยใช้รุ่น 64 บิตของคอมไพเลอร์ Visual C++ ของ Microsoft และตัวเชื่อมโยงเขต คุณอาจได้รับตัวเชื่อมโยงเขตหมายเลขข้อผิดพลาด LNK4197 ถ้าฟังก์ชันที่ถูกประกาศสำหรับการส่งออกมากกว่าหนึ่งครั้ง

อาการ

ตัวเชื่อมโยงเขตผลลัพธ์อาจคล้ายกับข้อมูลต่อไปนี้:

C:\>link /NOLOGO /def:Sample.def /pdb:Sample.pdb /out:Sample.dll  Sample.objSample.obj : warning LNK4197: export 'DllSample' specified multiple times; using first specification   Creating library Sample.lib and object Sample.exp 

สาเหตุ

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

  • ฟังก์ชันถูกประกาศ โดยใช้คำสำคัญ__declspec(dllexport)ในแฟ้มต้นฉบับ C:

    __declspec(dllexport) int DllSample() {   return 42;}
  • ฟังก์ชันถูกประกาศไว้ โดยใช้คำนิยามโมดูล ( แฟ้ม DEF):

    EXPORTS   DllSample

ข้อผิดพลาดตัวเชื่อมโยงข้อมูลนี้อาจเกิดขึ้นบ่อยที่สุดเมื่อทั้งสองคำสำคัญ__declspec(dllexport)และยังได้ แฟ้ม DEF จะใช้เพื่อกำหนดชื่อฟังก์ชันเดียวกันในตัว DLL โครงการ

การแก้ไข

เมื่อต้องการแก้ไขลักษณะการทำงานนี้ กำหนดฟังก์ชันส่งออกเพียงครั้งเดียว โดยใช้คำสำคัญ__declspec(dllexport)หรือ โดยการใช้การ แฟ้ม DEF อย่าใช้ทั้งสองวิธีการเหล่านี้

สถานะ

พฤติกรรมเช่นนี้เกิดจากการออกแบบ

ข้อมูลเพิ่มเติม

ประกาศฟังก์ชันสำหรับการส่งออกมากกว่าหนึ่งครั้งอาจทำให้เกิดข้อผิดพลาดตัวเชื่อมโยงข้อมูลที่อธิบายไว้ในส่วน "อาการ" ของบทความนี้ในรุ่น 32 บิตของ Microsoft คอมไพเลอร์ c ++ของ Windows และตัวเชื่อมโยงข้อมูล อย่างไรก็ตาม Microsoft แนะนำให้ คุณกำหนดฟังก์ชันส่งออกเพียงครั้งเดียวในทั้งรุ่น 32 บิต และ 64 บิตรุ่น Windows c ++คอมไพเลอร์และตัวเชื่อมโยงข้อมูล

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ

ชุมชนช่วยให้คุณถามและตอบคําถาม ให้คําติชม และรับฟังจากผู้เชี่ยวชาญที่มีความรู้มากมาย

ข้อมูลนี้เป็นประโยชน์หรือไม่

คุณพึงพอใจกับคุณภาพภาษาเพียงใด
สิ่งที่ส่งผลต่อประสบการณ์ใช้งานของคุณ
เมื่อกดส่ง คำติชมของคุณจะถูกใช้เพื่อปรับปรุงผลิตภัณฑ์และบริการของ Microsoft ผู้ดูแลระบบ IT ของคุณจะสามารถรวบรวมข้อมูลนี้ได้ นโยบายความเป็นส่วนตัว

ขอบคุณสำหรับคำติชมของคุณ!

×