Tôi gặp sự cố với trình biên dịch của mình cho tôi biết có một tham chiếu không xác định đối với hàm tôi muốn sử dụng trong thư viện. Tôi xin chia sẻ một số thông tin về các vấn đề:tai ương liên kết - tham chiếu không xác định
- Tôi biên dịch chéo với gcc cho C.
- tôi kêu gọi một hàm thư viện được truy cập thông qua một tiêu đề bao gồm trong đó bao gồm một tiêu đề, trong đó có nguyên mẫu .
- Tôi đã bao gồm thư mục tiêu đề bằng -I và tôi chắc chắn rằng nó đang được tìm thấy.
- Lần đầu tiên tôi tạo các tệp .o rồi liên kết chúng trong một lệnh riêng biệt.
Vì vậy, suy nghĩ của tôi là nó có thể là thứ tự mà tôi bao gồm các tệp thư viện, nhưng tôi không chắc chắn cách chính xác để đặt hàng chúng là gì. Tôi đã thử với bao gồm cả thư mục tiêu đề cả trước và sau tệp .o.
Một số gợi ý sẽ tuyệt vời và có thể cũng như giải thích cách trình liên kết thực hiện điều đó.
Cảm ơn!
Response to câu trả lời
- không có tập tin thư viện .a, chỉ .h và .c trong thư viện, vì vậy -l không phải là thích hợp
- sự hiểu biết của tôi về một tập tin thư viện là nó chỉ là một tập hợp các tập tin tiêu đề và nguồn, nhưng có lẽ đó là một tập hợp các tệp .o được tạo từ nguồn ?!
- không có tệp đối tượng thư viện nào được tạo, có thể phải có ?? Có vẻ như tôi không hiểu sự khác biệt giữa bao gồm và thư viện ... tôi sẽ làm việc với điều đó :-)
Cảm ơn mọi phản hồi! Tôi đã học được rất nhiều về thư viện. Tôi muốn đặt tất cả các câu trả lời là câu trả lời được chấp nhận :-)
Tệp tiêu đề ('.h' theo mặc định) _can_ chứa bất kỳ loại nguồn C nào, nhưng _strongly_ không được khuyến khích đặt bất kỳ thứ gì ngoài định nghĩa macro và _declarations_ trong đó. – vonbrand