C ++: วิธีจัดส่งไฟล์ปฏิบัติการเดี่ยวโดยไม่ต้องใช้ mingwm10.dll

ฉันกำลังสร้างโปรแกรมข้ามแพลตฟอร์มขนาดเล็กด้วย C++/wxWidgets ด้วยการใช้การเชื่อมโยงแบบคงที่ ฉันจัดการเพื่อให้ได้ไฟล์ .exe เพียงไฟล์เดียวสำหรับ Windows ในที่สุด อย่างไรก็ตาม ยังคงต้องการ mingwm10.dll ขนาดเล็ก (18 KB)

แม้ว่าฉันจะสามารถแจกจ่ายแอปของฉันด้วย dll นี้ แต่ฉันต้องการให้มัน "อยู่ภายใน" .exe... เป็นไปได้ไหม

ขอบคุณ


person Alex    schedule 14.04.2011    source แหล่งที่มา
comment
อาจซ้ำซ้อนกับ ไม่มี mingwm10.dll   -  person Nemanja Trifunovic    schedule 14.04.2011
comment
ใช่ ฉันเห็นคำถามนั้นแล้ว... ดังนั้นจึงไม่มีทางทำเช่นนั้นได้ น่าเศร้าเพราะฉันสามารถทำได้ด้วย wxPython ล่าม Python ทั้งหมดอยู่ในไฟล์ .exe ไฟล์เดียว   -  person Alex    schedule 14.04.2011
comment
คอมไพล์ wxWidgets, QT หรืออะไรก็ได้ที่ไม่มีการพึ่งพา ... คุณอาจไม่ต้องการมัน   -  person AJG85    schedule 14.04.2011
comment
จะใช้งานได้หรือไม่: stackoverflow.com/questions/3396876/missing-mingwm10 -dll/   -  person Nemanja Trifunovic    schedule 14.04.2011


คำตอบ (2)


หากคุณใช้สคริปต์กำหนดค่าเพื่อคอมไพล์ wxWidgets ให้เพิ่ม --disable-threads สิ่งนี้จะตั้งค่า wxUSE_THREADS เป็น 0 คลาส wxThread และโค้ดทั้งหมดที่ขึ้นอยู่กับเธรดจะไม่ถูกคอมไพล์ mingwm10.dll โดยอัตโนมัติจะไม่ถูกเชื่อมโยง

person marcin    schedule 17.04.2011
comment
MinGW มีไลบรารีขนาดเล็กสำหรับจัดการเธรดเนื่องจากต้องใช้ DllMain() เพื่อรับการแจ้งเตือนเกี่ยวกับการยุติเธรด คุณไม่สามารถกำจัดมันได้อย่างง่ายดาย - person marcin; 03.05.2011

"EXE เดียวที่มีไฟล์โครงการทั้งหมด" เรียกว่าสคริปต์การตั้งค่า พิจารณาบางอย่างเช่น InnoSetup หรือ MSI

การหมุน DLL การติดตั้งของคุณเองในโค้ดใช้งานครั้งแรกนั้นเป็นไปได้ในทางทฤษฎี แต่น่าเกลียดอย่างยิ่ง จะเป็นดังนี้: คุณเพิ่ม DLL (บีบอัดไว้ ถ้าเป็นไปได้) ลงใน EXE เป็นทรัพยากร เมื่อเริ่มต้นระบบ คุณพยายามโหลด DLL; ถ้าคุณทำไม่ได้ คุณจะเอามันมาจากแหล่งข้อมูลและวางไว้ที่ไหนสักแห่ง และนั่นจะพังภายใต้ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบ และการยกระดับสิทธิ์อัตโนมัติจะไม่ทำงาน (ใช้ได้กับไฟล์ติดตั้ง) และคุณต้องระวังอย่างมากที่จะไม่เรียกสิ่งใดใน DLL ก่อนที่จะทำการติดตั้ง อย่างที่ฉันพูดน่าเกลียดมาก

person Seva Alekseyev    schedule 14.04.2011