ข้อผิดพลาดร้ายแรง LNK1112: โมดูลเครื่องประเภท 'x64' ขัดแย้งกับประเภทเครื่องเป้าหมาย 'X86'


187

ฉันใช้ CUDA (VC ++, Visual studio 2008sp1) เพื่อดีบักโปรแกรม FEM โปรแกรมสามารถทำงานบนแพลตฟอร์ม Win32 เท่านั้นเนื่องจากความไม่เพียงพอของ cuda ฉันคิดว่าไฟล์ไลบรารีที่ลิงก์นั้นถูกคอมไพล์บนแพลตฟอร์ม x86 แต่เมื่อฉันรวบรวมมันฉันจะได้รับข้อความแสดงข้อผิดพลาด "ข้อผิดพลาดร้ายแรง LNK1112: ข้อผิดพลาดร้ายแรงของเครื่องโมดูล 'x64' กับเครื่องเป้าหมายชนิด 'X86'"

ฉันพยายามแปลงแพลตฟอร์มเป็น x64 แต่มันไม่ทำงาน โปรดบอกฉัน: "โมดูลประเภทเครื่อง" คืออะไรและ "ประเภทเครื่องเป้าหมาย" คืออะไร? ฉันจะเอาชนะมันได้อย่างไร

คำตอบ:


262

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

นี่คือสิ่งที่ต้องตรวจสอบตามลำดับนี้:

  1. ตรวจสอบตัวเลือกคุณสมบัติของคุณในการตั้งค่าตัวเชื่อมโยงของคุณที่: คุณสมบัติ> คุณสมบัติการกำหนดค่า> ตัวเชื่อมโยง> ขั้นสูง> เครื่องเป้าหมาย เลือก MachineX64 หากคุณกำหนดเป้าหมายเป็นบิลด์ 64 บิตหรือ MachineX86 หากคุณสร้างบิลด์ 32 บิต

  2. เลือก Build> เครื่องมือจัดการการกำหนดค่าจากเมนูหลักใน visual studio ตรวจสอบให้แน่ใจว่าโครงการของคุณมีการระบุแพลตฟอร์มที่ถูกต้อง มีความเป็นไปได้ที่ IDE จะถูกตั้งค่าให้สร้าง x64 แต่โครงการแต่ละรายการในโซลูชันสามารถตั้งค่าเป็นเป้าหมาย win32 ใช่แล้วสตูดิโอเสมือนจริงปล่อยเชือกมากมายให้แขวนอยู่ แต่นั่นคือชีวิต

  3. ตรวจสอบไฟล์ไลบรารีของคุณว่าเป็นแพลตฟอร์มประเภทใดที่กำลังกำหนดเป้าหมาย สามารถใช้งานได้โดยใช้ dumpbin.exe ซึ่งอยู่ในไดเรกทอรี VC \ bin ของ Visual ใช้ตัวเลือกส่วนหัวเพื่อถ่ายโอนข้อมูลฟังก์ชั่นทั้งหมดของคุณ ค้นหารายการเครื่องสำหรับแต่ละฟังก์ชั่น มันควรจะรวม x64 หากเป็น 64 บิตบิลด์

  4. ใน visual studio เลือกเครื่องมือ> ตัวเลือกจากเมนูหลัก เลือกโครงการและโซลูชัน> ไดเรกทอรี VC ++ เลือก x64 จากเมนูดร็อปดาวน์ ตรวจสอบให้แน่ใจว่ารายการแรกคือ$ (VCInstallDir) \ bin \ x86_amd64ตามด้วย$ (VCInstallDir) \ bin

เมื่อฉันทำขั้นตอนที่ 4 ทุกอย่างทำงานได้อีกครั้งสำหรับฉัน สิ่งที่ฉันกำลังประสบปัญหานี้ในทุกโครงการของฉันที่ฉันต้องการรวบรวมไปสู่เป้าหมาย 64 บิต


6
ช่วยชีวิต นอกจากนี้ในขั้นตอนที่ 4 "Library Directories" จำเป็นต้องได้รับการอัปเดตเป็นเส้นทาง 64 บิตด้วย
Gregory

37
สำหรับผู้ที่ใช้ Visual Studio 2013 - เลิกใช้ขั้นตอนที่ 4 ตอนนี้คุณทำการเปลี่ยนแปลงคุณสมบัติของโครงการ -> คุณสมบัติการกำหนดค่า -> ไดเรกทอรี VC ++ - ไดเรกทอรีไลบรารี
PolyMesh

3
หากคุณใช้ไลบรารีภายนอกที่รวบรวมเป็น x86 คุณจะได้รับข้อผิดพลาดนี้ด้วย ฉันพบปัญหาเมื่อพยายามสร้างโครงการโดยใช้ Google Test libs
kayleeFrye_onDeck

3
หากฉันไม่มีไฟล์โครงการ (ใช้ nmake บน Makefile) ฉันจะทำสิ่งเดียวกันได้อย่างไร
118967

3
คุณจะทำสิ่งนี้ในบรรทัดคำสั่งแทนที่จะสร้างโครงการในเวอร์ชัน GUI ได้อย่างไร
repzero

152

นอกจากC Johnsonรายการฉันจะเพิ่มจุดต่อไปนี้:

เช็คอิน Visual Studio:
คุณสมบัติโครงการ -> คุณสมบัติการกำหนดค่า -> ตัวเชื่อมโยง -> บรรทัดคำสั่ง

"ตัวเลือกเพิ่มเติม" ไม่ควรมี /machine:X86

ฉันมีคีย์ดังกล่าวสร้างโดยผลลัพธ์ของ CMake: CMakeสร้างโปรเจ็กต์ x86 จากนั้นฉันเพิ่มแพลตฟอร์ม x64 ผ่านConfiguration Managerใน Visual Studio 2010 - ทุกอย่างถูกสร้างมาอย่างดีสำหรับแพลตฟอร์มใหม่ยกเว้นว่าบรรทัดคำสั่ง linker ระบุ/machine:X86แยกต่างหาก


20
นี่เป็นปัญหาของฉันอย่างแน่นอน! แต่มันเป็นโครงการสร้างของ CMake Visual Studio 2017 ที่ฉันใช้เครื่องมือจัดการการกำหนดค่าเพื่อสร้างการกำหนดค่าการสร้างแพลตฟอร์ม x64 (ซึ่งการกำหนดค่าการสร้าง Win32 ถูกคัดลอกเพื่อสร้างการกำหนดค่าการสร้าง x64) สิ่งที่เกิดขึ้นก็คือความขัดแย้งของ "/ เครื่อง:" การตั้งค่าระหว่าง "ตัวเลือกทั้งหมด -> ตัวเลือกเพิ่มเติม" และ "ขั้นสูง -> เครื่องเป้าหมาย" ในการแก้ไขให้ลบการตั้งค่า "ตัวเลือกทั้งหมด -> ตัวเลือกเพิ่มเติม" -> "/ เครื่อง:"
BoiseBaked

2
นี่อาจช่วยฉันชั่วโมง ขอบคุณ!
rsp1984

3
นี่คือการแก้ไขสำหรับฉันดังนั้นเพียงแค่อยากจะบอกว่าขอบคุณแปลก ๆ ฉัน upvoted แล้วดังนั้นฉันต้องมาที่นี่ก่อนด้วยปัญหาเดียวกัน! :)
Adam Dempsey

1
ความแตกต่างเล็กน้อยของโซลูชันนี้: บางโครงการในโซลูชันของฉันไม่มี "ตัวเชื่อมโยง" ในคุณสมบัติการกำหนดค่า พวกเขามี "บรรณารักษ์" แทน ในกรณีเหล่านี้บรรณารักษ์ -> ตัวเลือกทั้งหมด -> ตัวเลือกเพิ่มเติมกล่าว / เครื่อง: x86 ขณะที่บรรณารักษ์ -> ตัวเลือกทั้งหมด -> เครื่องเป้าหมายพูด / เครื่อง: x64 ฉันลบ x86 ออกจากบรรณารักษ์ -> ตัวเลือกทั้งหมด -> ตัวเลือกเพิ่มเติม ... และในที่สุดสิ่งต่าง ๆ ก็ถูกสร้างและเชื่อมโยงกัน
Xenial

ขอบคุณสำหรับเคล็ดลับเหล่านี้ ดูเหมือนว่าจะเป็นปัญหาทั่วไปสำหรับผู้ใช้ CMake ขึ้นโหวต
Hao Xi

54

ฉันประสบปัญหาเดียวกันใน VS2008 เมื่อฉันพยายามเพิ่ม X64 build ลงในโครงการที่ถูกแปลงจาก VS2003

ฉันดูทุกสิ่งที่พบเมื่อค้นหาข้อผิดพลาดนี้ใน Google (เครื่องเป้าหมาย, VC ++ Directories, DUMPBIN .... ) และทุกอย่างดูโอเค

ในที่สุดฉันก็สร้างโครงการทดสอบใหม่และทำการเปลี่ยนแปลงแบบเดียวกันและดูเหมือนว่าจะใช้งานได้

การทำข้อแตกต่างระหว่างไฟล์ vcproj เปิดเผยปัญหา ....

โครงการแปลงของฉันมี / เครื่อง: i386 ตั้งเป็นตัวเลือกเพิ่มเติมที่ตั้งไว้ภายใต้ Linker-> บรรทัดคำสั่ง ดังนั้นจึงมีสองตัวเลือก / เครื่องตั้งค่า (ทั้ง x64 และ i386) และตัวเลือกเพิ่มเติมที่ได้รับการตั้งค่า

การลบสิ่งนี้และการตั้งค่าอย่างถูกต้องภายใต้ Linker-> Advanced-> Target Machine ทำให้ปัญหาหายไป


8
นี่เป็นปัญหาของฉันเช่นกัน - แต่สิ่งนี้มาจากโซลูชัน Visual Studio ที่สร้างขึ้นโดยใช้ CMake ดูเหมือนว่า CMake จะชอบเพิ่มตัวเลือกนี้ด้วย
Nick Chadwick

4
ฉันมาจากโครงการ CMake และสามารถยืนยันได้ว่าจะเพิ่มตัวเลือกนี้
BeeOnRope

25

การตั้งค่าโครงการทั้งหมดดูเหมือนจะสมบูรณ์แบบ แต่ฉันยังคงได้รับข้อผิดพลาด ค้นหา.vcxprojไฟล์และค้นหา "x86" พบปัญหา:

<Lib>
  <AdditionalOptions> /machine:X86 %(AdditionalOptions)</AdditionalOptions>
</Lib>

การค้นหา / แทนที่อย่างรวดเร็วสำหรับเหตุการณ์ทั้งหมด (การตั้งค่าไฟล์สิบรายการ) แก้ไขปัญหา


3
นอกจากนี้ในคุณสมบัติโครงการ -> ตัวเลือกการกำหนดค่า -> บรรณารักษ์ -> ตัวเลือกทั้งหมด -> ตัวเลือกเพิ่มเติม
Xenial

13

เนื่องจากปัญหาเกิดจากความแตกต่างในการรวบรวมและข้อกำหนดเครื่องเป้าหมาย (x86 & x64) ทำตามขั้นตอนด้านล่าง:

  1. เปิดโครงการ C ++ ที่คุณต้องการกำหนดค่า
  2. เลือกปุ่มเครื่องมือจัดการการกำหนดค่าเพื่อเปิดกล่องโต้ตอบเครื่องมือจัดการการกำหนดค่า
  3. ในรายการดรอปดาวน์แพลตฟอร์มโซลูชันที่ใช้งานอยู่ให้เลือกตัวเลือกเพื่อเปิดกล่องโต้ตอบแพลตฟอร์มโซลูชันใหม่
  4. ในรายการแบบหล่นลงหรือเลือกแพลตฟอร์มใหม่ให้เลือกแพลตฟอร์ม 64 บิต

มันแก้ไขปัญหาของฉัน


12

คุณอาจมีไฟล์. OBJ หรือ. LIB หนึ่งไฟล์ซึ่งมีเป้าหมายสำหรับ x64 (นั่นคือประเภทเครื่องโมดูล) ในขณะที่คุณเชื่อมโยงกับ x86 (นั่นคือประเภทเครื่องเป้าหมาย)

ใช้ DUMPBIN / HEADERS ในไฟล์. obj ของคุณและตรวจสอบรายการเครื่องในบล็อก FILE HEADER VALUES


3
นี่คือสาเหตุสำคัญสำหรับฉันเมื่อฉันพบข้อความแสดงข้อผิดพลาดนี้ ก่อนหน้านี้ฉันสร้างขึ้นสำหรับสถาปัตยกรรมเดียวและไม่ได้ล้างไฟล์อ็อบเจ็กต์และ libs อย่างถูกต้องจากบิลด์ก่อนหน้านั้น หลังจากลบไฟล์. obj และ. lib เก่าทั้งหมดจากบิลด์ก่อนหน้าฉันสามารถคอมไพล์โปรเจ็กต์ของฉันด้วยสถาปัตยกรรมใหม่
เบ็น

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

7

ใน Visual Studio 2012 +/- หน้าคุณสมบัติสำหรับ "Configuration Properties'.Linker" Command Line "มีกล่องที่ระบุว่า" ตัวเลือกเพิ่มเติม "หากคุณกำลังสร้าง x64 ตรวจสอบให้แน่ใจว่ากล่องไม่มี / MACHINE: I386. โครงการของฉันทำและสร้างข้อผิดพลาดที่เป็นปัญหา


4

ฉันเจอปัญหานี้เมื่อสร้าง QT คำแนะนำที่ฉันอ่านที่ไหนสักแห่งแนะนำว่าฉันกำหนดค่า nmake โดยใช้พร้อมรับคำสั่ง VS

ฉันเลือกพรอมต์คำสั่ง x64 และดำเนินการกำหนดค่าโดยไม่ยุ่งยากมาก เมื่อฉันลอง nmake มันทำให้เกิดข้อผิดพลาดนี้

ฉันคิดว่าส่วนประกอบบางอย่างถูกสร้างไว้ล่วงหน้าสำหรับ 32 บิต ข้อผิดพลาดยังรายงานว่าโมดูลใดถูกสร้างขึ้นสำหรับ x86

ฉันใช้พรอมต์คำสั่ง VS แบบปริยาย 32 บิตและใช้งานได้


4
นี่ทำให้ฉันไปถูกทาง หากคุณกำลังสร้าง 64 บิตคุณสามารถใช้ทางลัดหน้าต่างนี้เพื่อตั้งค่าสภาพแวดล้อมของคุณ: C: \ Windows \ System32 \ cmd.exe / A / Q / KC:\Qt\Qt5.1.1\msvc2012_64 \ bin \ qtenv2.bat & "ไฟล์ C: \ Program (x86) \ Microsoft Visual Studio 11.0 \ VC \ vcvarsall.bat" x86_amd64 & cd c: \ YourDir ส่วนที่สำคัญเกี่ยวกับนั่นคือ x86_amd64 - โดยไม่มีการตั้งค่าสภาพแวดล้อม ขึ้นเป็นสภาพแวดล้อมแบบ 32 บิตและ qmake หยิบมันขึ้นมาเช่น
gremwell

3

ใน Visual Studio 2013

1) ตรวจสอบในหน้าคุณสมบัติโครงการ / คุณสมบัติการกำหนดค่า / ตัวเชื่อมโยง / ตัวเลือกทั้งหมดและแก้ไขเครื่องและไดเรกทอรีที่ตั้งค่าพลาดทั้งหมด

2) ตรวจสอบในหน้าคุณสมบัติโครงการ / คุณสมบัติการกำหนดค่า / ลิงเกอร์ / อินพุตและแก้ไขไดเรกทอรีที่พลาดการกำหนดค่าทั้งหมด

ดูตัวอย่าง 1)



1
"project property - CUDA Runtime API - GPU - NVCC Compilation Type"

ตั้งค่าตัวเลือกการคอมไพล์ 64 บิต -m64 -cubin

คำใบ้อยู่ที่บันทึกการคอมไพล์ แบบนี้:

nvcc.exe ~~~~~~ -machine 32 -ccbin ~~~~~

ที่ "-machine 32"คือปัญหา

ตั้งค่าตัวเลือกการคอมไพล์ 64 บิตครั้งแรกตั้งค่าตัวเลือกการคอมไพล์ไฮบริดอีกครั้ง จากนั้นคุณสามารถเห็นความสำเร็จ


1

หากโซลูชันของคุณมีโครงการ lib ให้ตรวจสอบคุณสมบัติเครื่องเป้าหมายในคุณสมบัติ -> บรรณารักษ์ -> ทั่วไป


1

นอกจากรายการของ Jhonson แล้วให้ตรวจสอบโฟลเดอร์ของไลบรารี

ใน visual studio เลือกเครื่องมือ> ตัวเลือกจากเมนูหลัก เลือกโครงการและโซลูชัน> ไดเรกทอรี VC ++ เลือก x64 จากแพลตฟอร์มแบบเลื่อนลง

$(VCInstallDir)lib\AMD64;
$(VCInstallDir)atlmfc\lib\amd64;
$(WindowsSdkDir)lib\x64;

1

สิ่งนี้เกิดขึ้นกับฉันในวันนี้เพราะฉันได้เพิ่มไดเรกทอรีห้องสมุดขณะที่ยังอยู่ในโหมด x86 และลบไดเรกทอรีที่สืบทอดมาโดยไม่ตั้งใจทำให้พวกเขาฮาร์ดโค้ดแทน จากนั้นหลังจากเปลี่ยนเป็น x64 ไดเรกทอรี VC ++ ของฉันยังคงอ่าน:

"... ; $ (VC_LibraryPath_x86); $ (WindowsSDK_LibraryPath_x86);"

แทน _x64


ขอบคุณ นั่นคือปัญหาของฉัน สำหรับผู้อ่านในอนาคตตอนนี้ "Library Directories" ของฉันอ่านแล้ว$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(NETFXKitsDir)Lib\um\x64;
Phlox Midas

1

ฉันใช้ CMake แล้วเพิ่มการกำหนดค่า win32 หน้าคุณสมบัติแสดงx86แต่จริงๆแล้วเมื่อเปิดไฟล์ vcxproj ในเท็กซ์เอดิเตอร์นั่นคือ x64! การเปลี่ยนเป็น x86 แก้ปัญหานี้ด้วยตนเอง


2
ฉันมีสิ่งที่คล้ายกัน ฉันไม่ทราบว่าการตั้งค่าใดถูกซ่อนอยู่ที่ไหน (และฉันทำตามคำแนะนำของคำตอบส่วนใหญ่ที่นี่) แต่การระบุตัวกำเนิดนั้นทำเพื่อฉัน: cmake -G "Visual Studio 12 Win 64"
user55937

1

มันเป็นปัญหาที่น่าหงุดหงิดและน่ารำคาญ แต่เมื่อคุณเข้าใจแล้วมันค่อนข้างง่าย: คุณมีองค์ประกอบบางอย่างในการสร้างอาคารสถาปัตยกรรมประเภทหนึ่ง (ในกรณีของคุณ x64) แม้ว่าจะเป็นเป้าหมายสำหรับประเภทอื่น (พูด x86 )

คุณสามารถตัดแหล่งที่มาของปัญหาของคุณโดยดูที่ไฟล์ obj ที่ทำให้เกิดความผิดพลาดและเริ่มมองหาปัญหาที่นั่น obj ทุกตัวจะมีซอร์สโค้ดแบบอะนาล็อก: ทั้งใน cpp, c, asm เป็นต้นอาจมีเหตุการณ์บิวด์พิเศษรอบตัวซึ่งใช้เครื่องมือที่ผิด ตรวจสอบว่าในแผ่นคุณสมบัติ

ฉันจะดูที่นั่นก่อนที่จะผ่านรายการของ C Johnson



0

ประเภทเครื่องโมดูลเป็นเครื่องที่คุณกำลังรวบรวมและประเภทเครื่องเป้าหมายเป็นสถาปัตยกรรม x86 หรือ x64 ที่คุณกำลังสร้างไบนารีของคุณ


0

ปัญหานี้อาจเกิดขึ้นหากโครงการของคุณตั้งค่าให้มีไดเรกทอรีระดับกลางเดียวกันในคุณสมบัติโครงการ -> คุณสมบัติการกำหนดค่า -> ทั่วไป


0

ก่อนอื่นให้ลองทำสิ่งต่าง ๆ ต่อไปนี้: 1. ไปที่เครื่องมือจัดการการกำหนดค่าและสร้าง x64 ใหม่หากยังไม่มีอยู่ 2. เลือกโซลูชัน x64 3. ไปที่คุณสมบัติโครงการแล้วเลือก Linker-> Advanced เลือกเครื่อง x64 4. สร้างโซลูชันขึ้นใหม่

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


0

สิ่งนี้เกิดขึ้นกับฉันเมื่อฉันแปลงโซลูชัน VS2008 เป็น VS2010 และเปลี่ยนการกำหนดค่า win32 เป็น X64 ในโซลูชันเดิมของฉันฉันมี mfcs90d.lib (การกำหนดค่า -> ตัวเชื่อมโยง -> อินพุต -> การพึ่งพาเพิ่มเติม) ขณะที่ฉันใช้ VS010 ในโฟลเดอร์ VS2010 ซึ่งเป็น mfcs100d.lib ดังนั้นฉันเปลี่ยน mfcs90d.lib เป็น mfcs100d.lib ใน (Configuration-> Linker-> Input-> การพึ่งพาเพิ่มเติม) มันทำงานได้ดี


0

สำหรับผู้ที่อยู่กับผู้สร้าง QT ปัญหาเดียวกัน (ตามที่อธิบายโดย @ c-johnson) ตรวจสอบให้แน่ใจว่าการตั้งค่าคอมไพเลอร์สำหรับ MSVC ในชุดของคุณถูกตั้งค่าเป็น x86 ดังที่แสดงด้านล่าง

การตั้งค่า QT Creator Kit สำหรับคอมไพเลอร์ MSVC x86


0

สำหรับบางคนที่ใช้ command prompt (dos prompt) สิ่งนี้อาจมีประโยชน์:

call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" --help
Error in script usage. The correct usage is:
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" [option]
  or
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" [option] store
  or
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" [option] [version number]
  or
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" [option] store [version number]
where [option] is: x86 | amd64 | arm | x86_amd64 | x86_arm | amd64_x86 | amd64_arm
where [version number] is either the full Windows 10 SDK version number or "8.1" to use the windows 8.1 SDK
:
The store parameter sets environment variables to support
  store (rather than desktop) development.
:
For example:
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_amd64
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_arm store
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_amd64 10.0.10240.0
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_arm store 10.0.10240.0
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 8.1
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 store 8.1
:
Please make sure either Visual Studio or C++ Build SKU is installed.

นอกจากนี้หากคุณทำสิ่งนี้:

CL "% 1% 2% 3" / EHsc / ลิงก์ user32.lib Gdi32.lib Winmm.lib comctl32.lib * .obj / ระบบย่อย: คอนโซล / เครื่อง: x86

คุณต้องเดล .obj * ก่อน ; หลีกเลี่ยงความสับสน linker กับวัตถุ 64 และ 32 บิตที่เหลือจากการรวบรวมก่อน?


0

คำแนะนำที่ดีมากมายด้านบน

นอกจากนี้หากคุณพยายามสร้างใน x86 Win32:

ตรวจสอบให้แน่ใจว่าไลบรารีใด ๆ ที่คุณเชื่อมโยงไปยังใน Program Files (x86) เป็นไลบรารี x86 จริง ๆ เพราะไม่จำเป็น ...

ตัวอย่างเช่นไฟล์ lib ที่ฉันลิงค์ใน C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Professional \ SDK นั้นเกิดข้อผิดพลาดขึ้นในที่สุดฉันก็พบรุ่น x86 ในไฟล์ C: \ Program (x86) \ Windows ชุด \ 10 \ Lib \ 10.0.18362.0 \ um \ x86 และทุกอย่างทำงานได้ดี


-1

ระบบปฏิบัติการคืออะไร? หากเป็น Windows x64 คุณต้องตรวจสอบให้แน่ใจว่าติดตั้ง CUDA x64 และ VS2008 ควรรวบรวมโครงการในโหมด x64 ...

CUDA จะติดตั้ง x64 OR x86 ใน windows เท่านั้น


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