g ++ (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5"tham chiếu không xác định" khi liên kết với một thư viện tĩnh
Tôi có thư viện tĩnh sau đây gọi là sdpAPI.a. Tôi đang gặp sự cố khi cố liên kết nó với ứng dụng thử nghiệm của mình. Chỉ cần tự hỏi nếu tôi đang làm gì đó sai. Thư viện tĩnh đã được xây dựng với g ++;
thư của tôi là như sau:
/projects/unit_test/main.c
/projects/unit_test/sdp/inc/sdpAPH.h
/projects/unit_test/sdp/lib/sdpAPI.a
mã nguồn của tôi là thế này:
#include <stdio.h>
#include "sdpAPI.h"
int main(void)
{
printf("----- TEST SDP ------\n");
try {
sdpSessionDescription sdp;
sdp.clear();
}
catch(...) {
printf("----- TEST FAILED --------\n");
return 0;
}
printf("------ TEST SUCCESSFULL ------\n");
return 0;
}
Và Makefile của tôi là thế này:
OBJECT_FILES = main.o
CC = g++
CFLAGS = -Wall -Wextra -Wunreachable-code -ggdb -O0
TARGET = sdp_demo
INC_PATH = -I sdp/inc
LIB_PATH = -L sdp/lib/sdpAPI.a
$(TARGET): $(OBJECT_FILES)
$(CC) $(CFLAGS) $(INC_PATH) $(LIB_PATH) $(OBJECT_FILES) -o $(TARGET)
main.o: main.c
$(CC) $(CFLAGS) $(INC_PATH) $(LIB_PATH) -c main.c
clean:
rm -f $(TARGET) $(OBJECT_FILES) *~
Đây là những mối liên kết lỗi tôi nhận được:
undefined reference to `sdpSessionDescription::sdpSessionDescription()'
undefined reference to `sdpSessionDescription::clear()'
undefined reference to `sdpSessionDescription::~sdpSessionDescription()'
undefined reference to `sdpSessionDescription::~sdpSessionDescription()'
Rất cám ơn cho bất cứ đề nghị,
Tôi đã sao chép thư viện tĩnh này: libsdpAPI.a và chỉnh sửa dòng sau LIB_PATH = -L sdp/lib -l sdpAPI. Tuy nhiên, tôi vẫn nhận được cùng một tham chiếu không xác định. Cảm ơn. – ant2009
@ ant2009, đó là vì thứ tự quan trọng. Xem câu trả lời được cập nhật. – paxdiablo
Cảm ơn, điều đó đã hiệu quả. Tôi đã có nó theo thứ tự sai. Tôi rất quen với việc chia sẻ Tôi không biết về thứ tự tĩnh. Cảm ơn. – ant2009