ฉันกำลังทำงานกับเกมโดยใช้ Visual C ++ ฉันมีส่วนประกอบบางอย่างในโปรเจ็กต์แยกต่างหากและตั้งค่าการอ้างอิงโปรเจ็กต์ ฉันจะ # รวมไฟล์ส่วนหัวจากโปรเจ็กต์อื่นได้อย่างไร ฉันไม่รู้ว่าจะใช้คลาสจากโครงการหนึ่งไปยังอีกโครงการหนึ่งได้อย่างไร
ฉันกำลังทำงานกับเกมโดยใช้ Visual C ++ ฉันมีส่วนประกอบบางอย่างในโปรเจ็กต์แยกต่างหากและตั้งค่าการอ้างอิงโปรเจ็กต์ ฉันจะ # รวมไฟล์ส่วนหัวจากโปรเจ็กต์อื่นได้อย่างไร ฉันไม่รู้ว่าจะใช้คลาสจากโครงการหนึ่งไปยังอีกโครงการหนึ่งได้อย่างไร
คำตอบ:
ในโปรเจ็กต์ที่คุณต้องการ # รวมไฟล์ส่วนหัวจากโปรเจ็กต์อื่นคุณจะต้องเพิ่มพา ธ ของไฟล์ส่วนหัวลงในส่วนไดเร็กทอรีรวมเพิ่มเติมในคอนฟิกูเรชันโปรเจ็กต์
ในการเข้าถึงการกำหนดค่าโครงการ:
หากต้องการรวมไฟล์ส่วนหัวเพียงแค่เขียนสิ่งต่อไปนี้ในโค้ดของคุณ:
#include "filename.h"
โปรดทราบว่าคุณไม่จำเป็นต้องระบุเส้นทางที่นี่เนื่องจากคุณรวมไดเร็กทอรีไว้ในไดเร็กทอรีรวมเพิ่มเติมแล้วดังนั้น Visual Studio จะทราบว่าจะค้นหาได้จากที่ใด
หากคุณไม่ต้องการเพิ่มตำแหน่งไฟล์ส่วนหัวทั้งหมดในการตั้งค่าโปรเจ็กต์คุณสามารถรวมไดเร็กทอรีได้ไม่เกินจุดแล้ว #include เทียบกับจุดนั้น:
// In project settings
Additional Include Directories ..\..\libroot
// In code
#include "lib1/lib1.h" // path is relative to libroot
#include "lib2/lib2.h" // path is relative to libroot
หากใช้ไลบรารีแบบคงที่ (เช่นไฟล์. lib) คุณจะต้องเพิ่มไลบรารีลงในอินพุตตัวเชื่อมโยงเพื่อให้ในเวลาเชื่อมโยงสัญลักษณ์สามารถเชื่อมโยงกับ (มิฉะนั้นคุณจะได้รับสัญลักษณ์ที่ไม่ได้รับการแก้ไข):
#include "proj2\include.h"
ส่วนตัวผมชอบที่จะเพิ่มโฟลเดอร์แม่ของไฟล์โครงการมาเพื่อให้คุณอย่างน้อยสามารถระบุตัวเองเช่น การมีหลายโปรเจ็กต์ต่อโซลูชันดูเหมือนจะมุ่งไปที่ภาษา NET เนื่องจากมีการใช้งานที่แตกต่างกันมาก ยังพบวิธีที่ยอดเยี่ยมในการเอาชนะสิ่งนี้สำหรับโครงการ C ++
#include
ไม่มีส่วนเกี่ยวข้องกับโปรเจ็กต์ - เพียงแค่บอกพรีโปรเซสเซอร์ว่า "ใส่เนื้อหาของไฟล์ส่วนหัวที่นี่" หากคุณกำหนดเส้นทางที่ชี้ไปยังตำแหน่งที่ถูกต้อง (อาจเป็นเส้นทางสัมพัทธ์เช่น ../your_file.h) เส้นทางนั้นจะรวมได้อย่างถูกต้อง
อย่างไรก็ตามคุณจะต้องเรียนรู้เกี่ยวกับไลบรารี (ไลบรารีแบบคงที่ / ไดนามิก) เพื่อที่จะทำให้โครงการดังกล่าวเชื่อมโยงได้อย่างถูกต้อง - แต่นั่นเป็นอีกคำถามหนึ่ง
เนื่องจากทั้งสองโครงการอยู่ภายใต้โซลูชันเดียวกันจึงมีวิธีที่ง่ายกว่าสำหรับการรวมไฟล์และตัวเชื่อมโยงตามที่อธิบายไว้ในhttps://docs.microsoft.com/en-us/cpp/build/adding-references-in-visual-cpp- โครงการ? view = vs-2019 :
#include "../libProject/libHeader.h"
)คุณต้องกำหนดเส้นทางไปยังส่วนหัวในคุณสมบัติของโปรเจ็กต์เพื่อให้คอมไพเลอร์ดูที่นั่นเมื่อพยายามค้นหาไฟล์ส่วนหัว ฉันจำตำแหน่งที่แน่นอนไม่ได้ แต่ดูคุณสมบัติของโครงการแล้วคุณจะเห็น
พยายามหลีกเลี่ยงการอ้างอิงเส้นทางแบบสมบูรณ์ในคำสั่ง #include ไม่ว่าจะเป็นแบบสัมบูรณ์หรือแบบสัมพัทธ์ ให้เพิ่มตำแหน่งของโฟลเดอร์รวมของโปรเจ็กต์อื่นในการตั้งค่าโปรเจ็กต์ของคุณแทน ใช้เฉพาะโฟลเดอร์ย่อยในการอ้างอิงเส้นทางเมื่อจำเป็น ด้วยวิธีนี้จะง่ายกว่าในการเคลื่อนย้ายสิ่งต่างๆโดยไม่ต้องอัปเดตโค้ดของคุณ
ขยายคำตอบของ @ Benav แนวทางที่ฉันชอบคือ:
$(SolutionDir)
ในไดเรกทอรีรวมเพิ่มเติมตอนนี้คุณสามารถรวมส่วนหัวจากโครงการอ้างอิงของคุณได้ดังนี้:
#include "OtherProject/Header.h"
หมายเหตุ:
#include
s แต่เป็นการตั้งค่าการอ้างอิงการสร้างที่ถูกต้องซึ่งคุณอาจต้องการ