แฟล็ก -L
บอกให้ลิงก์เกอร์เพิ่มไดเร็กทอรีเฉพาะลงในพาธการค้นหา
-l
บอกให้ลิงก์ในไลบรารีใดไลบรารีหนึ่ง และมันจะค้นหาเส้นทางการค้นหาเพื่อค้นหาไลบรารีนั้น
ด้วย DMD คุณจะต้องส่งแฟล็กไปยังตัวลิงก์ด้วยแฟล็ก -L
สามารถใช้เส้นทางแบบสัมบูรณ์หรือแบบสัมพัทธ์ก็ได้ แต่เส้นทางจะต้องสัมพันธ์กับตำแหน่งที่เรียกใช้คอมไพเลอร์ ดังนั้น หากคุณใช้พาธแบบสัมพัทธ์ คุณจะต้องรันคอมไพลเลอร์จากไดเร็กทอรีเดียวกัน (ซึ่งโดยทั่วไปแล้วไม่ใช่ปัญหา เนื่องจากโดยทั่วไปแล้วคุณจะมีคำสั่ง build ใน Makefile
ซึ่งคุณจะรันจากไดเร็กทอรีเดียวกันเสมอ) ไดเร็กทอรี).
สิ่งที่พบบ่อยที่สุดคือการใช้เส้นทางสัมบูรณ์สำหรับไลบรารีที่ติดตั้งบนระบบและเส้นทางสัมพัทธ์สำหรับไลบรารีเฉพาะสำหรับโปรเจ็กต์ของคุณ
ดังนั้น หากคุณมีห้องสมุด myzlib/lib/libz.a
คุณจะผ่าน -L-Lmyzlib/lib -L-lz
ถึง dmd
จากนั้นมันจะเพิ่ม myzlib/lib
ลงในพาธการค้นหาของตัวเชื่อมโยง จากนั้นมองหา libz.a
ในพาธการค้นหา (ตัวเชื่อมโยงรู้ว่าจะต้องใช้ส่วนที่ตามหลัง -l
เพิ่ม lib ที่ด้านหน้าของมัน และเพิ่ม .a
ต่อท้ายเพื่อรับ ห้องสมุดที่คุณกำลังมองหา)
คุณสามารถเพิ่มแฟล็กลิงก์เกอร์ไปที่ dmd.conf
แต่ฉันไม่แนะนำจริงๆ แฟล็กใน dmd.conf
คือสิ่งที่ dmd เสมอ ใช้สำหรับ ทุก โปรแกรม ดังนั้น คุณควรมีเฉพาะแฟล็กที่ใช้ในโปรแกรมทั้งหมดเท่านั้น
แต่ให้ป้อนพวกมันไปที่ dmd โดยตรง (ไม่ว่าจะเป็นบนบรรทัดคำสั่งหรือเป็นส่วนหนึ่งของ Makefile
)
สำหรับไฟล์ส่วนหัว คุณจะต้องทำซ้ำการประกาศใดๆ ที่คุณต้องการในไฟล์ .d
ไฟล์ส่วนหัวถูกใช้โดยคอมไพเลอร์ C หรือ C++ ไม่ใช่ตัวเชื่อมโยง D แชร์ลิงก์เกอร์เดียวกันกับที่คุณใช้สำหรับ C หรือ C++ แต่คอมไพเลอร์ของมันคือ dmd
ไม่ใช่ gcc
ดังนั้น คุณต้องทำซ้ำการประกาศ C ในไฟล์ D วิธีที่ง่ายที่สุดในการดำเนินการดังกล่าวคือใช้ htod
utility แต่ใช้งานได้เฉพาะใน Windows เท่านั้น หรือไวน์
ไม่ว่าคุณจะต้องประกาศการประกาศ C ที่คุณจะใช้ในไฟล์ .d
และทำเครื่องหมายด้วย extern(C)
person
Jonathan M Davis
schedule
20.02.2011