Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: Lỗi undefinded reference to Sum() xử lý thế nào?

  1. #1
    Ngày gia nhập
    10 2011
    Nơi ở
    /
    Bài viết
    26

    Mặc định Lỗi undefinded reference to Sum() xử lý thế nào?

    Không hiểu cái thư viện của mình khai báo có vấn đề hay sao mà khi mình gọi hàm Sum() (đã khai báo trong thư viện) và copile thì bị báo lỗi "undefinded reference to Sum()". Không hiểu lỗi ở chỗ nào,mong các bác chỉ hộ với - mình là newbie
    Đây là chương trình của mình:
    Code:
    #include<stdio.h>
    #include "cal.h"
    int main(int argc, char* argv[])
    {
    double a,b;
    printf("enter a\n");
    scanf("%lf",&a);
    printf("enter b\n");
    scanf("%lf",&b);
    printf("sum of two number is%lf\n",Sum(a,b));
    }
    Và đây là thư viện .c
    Code:
    #include "cal.h"
    double Sum(double a,double b)
    {
    double c;
    c =a+b;
    return c;
    }
    double Sub(double a,double b)
    {
    double c;
    c =a-b;
    return c;
    }
    double Mul(double a,double b)
    {
    double c;
    c = a*b;
    return c;
    }
    double Div(double a,double b)
    {
    double c;
    c =a/b;
    return c;
    }
    Thư viện .h
    Code:
    #ifndef __CALCULATION__
    #define __CALCULATION__
    double Sum(double a,double b);
    double Sub(double a,double b);
    double Mul(double a,double b);
    double Div(double a,double b);
    #endif

  2. #2
    Ngày gia nhập
    05 2011
    Bài viết
    82

    Thư viện .c phải được đặt cùng thư mục với .h và phải có cùng tên. bạn check lại xem đã đúng thông tin này chưa

  3. #3
    Ngày gia nhập
    10 2011
    Nơi ở
    /
    Bài viết
    26

    cả hai đều là cal. (h & c)
    còn chung thư mục thì cả hai đều để trong "thư mục riêng".Chắc không phải cái này vì mấy cái thư viện trước em tạo đều chạy được

  4. #4
    Ngày gia nhập
    05 2011
    Bài viết
    82

    vây bạn compile = lệnh như thế nào? tool gi?

  5. #5
    Ngày gia nhập
    11 2010
    Bài viết
    589

    Ở đâu cũng được, miễn là phải link đến file object của thư viện, hoặc là file lib (.so, .a):
    Giả sử chương trình chính là main.c, thì phải làm như sau (sau khi đã biên dịch tất cả ra object)

    Code:
    gcc -o main /path/to/main.o /path/to/cal.o

  6. #6
    Ngày gia nhập
    10 2011
    Nơi ở
    /
    Bài viết
    26

    Mặc định Lỗi undefinded reference to Sum() xử lý thế nào?

    Bác boss 14420 ơi! hôm trước em làm cái thư viện để tính giai thừa,sau khi include file.h vào file.c sau đó chạy bình thường,chỉ cần gọi hàm trong file.c ra => compile như bình thường là chạy được (em dùng gcc trong ubuntu ).Em nghĩ là file.c (trong bài này) của em có vấn đề,nhưng không biết nó nằm chỗ nào :(.Còn nữa,cái lỗi "undefinded reference to..." bản chất nó là gì các bác nhỉ (đã tìm hiểu nhưng mấy trang nước ngoài giải thích không hiểu nổi :(

  7. #7
    Ngày gia nhập
    05 2011
    Bài viết
    82

    Phải chỉ ra đường dẫn của add.c trong dòng lệnh do vì bạn dùng #include "add.h"
    Code:
    gcc -o main /path/to/main.c /path/to/cal.c
    Vì main.c chỉ include cal.h thì chỉ là phần khai kháo nên khi biên dịch không tìm ra được hàm Sum (undefinded reference to...)

  8. #8
    Ngày gia nhập
    10 2011
    Nơi ở
    /
    Bài viết
    26

    Thank bac tungt84,,như vậy thì vấn đề của em là phần complile . Nhưng khi em làm theo chỉ dẫn của bác thì có thông báo lỗi "không có tập tin nhập vào tiến trình biên dịch bị chấm dứt."

  9. #9
    Ngày gia nhập
    05 2011
    Bài viết
    82

    Bạn phải thay /path/to/ thành đường dẫn đến tâp tin nhé.
    Ví dụ man.c, cal.c, cal.h trong thư mục /home và command cung ở /home
    cd /home
    gcc -o main main.c cal.c

  10. #10
    Ngày gia nhập
    10 2011
    Nơi ở
    /
    Bài viết
    26

    Tìm đúng đường dẫn thì nó lại báo lỗi như ban đầu(undefinded reference to Sum). :(

Các đề tài tương tự

  1. Giải quyết lỗi "Object reference not set to an instance of an object." này thế nào?
    Gửi bởi saeth trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 08-11-2013, 07:12 PM
  2. Các loại reference trong Java: strong reference, soft reference, weak reference, phantom reference và ứng dụng
    Gửi bởi SuperUser trong diễn đàn Tutorials và Thủ thuật lập trình Java
    Trả lời: 2
    Bài viết cuối: 02-10-2013, 04:41 PM
  3. ADO.NET thêm reference như thế nào
    Gửi bởi somei00 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 04-06-2013, 11:09 PM
  4. Lỗi : Object reference not set to an instance of an object. Sửa như thế nào?
    Gửi bởi Bboy_Lee trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 31-12-2010, 01:42 AM
  5. Thắc mắc về value và reference
    Gửi bởi hieuuu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 06-11-2010, 10:58 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn