2010-06-21 40 views
19

Tôi cố gắng để biên dịch một trò chơi, nhưng nhận được 100 lỗi như:C++ lỗi khi biên dịch

C:\Users\AppData\Local\Temp\cctQCagR.o: In function `load_image(std::string)': 
main.cpp:(.text+0x4bd4): undefined reference to `std::string::c_str() const' 
C:\Users\Bill\AppData\Local\Temp\cctQCagR.o: In function `createShip(float, float)': 
main.cpp:(.text+0x4da4): undefined reference to `std::allocator<char>::allocator()' 
main.cpp:(.text+0x4dbc): undefined reference to `std::basic_string<char, std::char_tra 
its<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> cons 
t&)' 
main.cpp:(.text+0x4de4): undefined reference to `std::basic_string<char, std::char_tra 
its<char>, std::allocator<char> >::~basic_string()' 
main.cpp:(.text+0x4e04): undefined reference to `std::basic_string<char, std::char_tra 
its<char>, std::allocator<char> >::~basic_string()' 
main.cpp:(.text+0x4e1c): undefined reference to `std::allocator<char>::~allocator()' 
main.cpp:(.text+0x4e28): undefined reference to `std::allocator<char>::allocator()' 
main.cpp:(.text+0x4e40): undefined reference to `std::basic_string<char, std::char_tra 
its<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> cons 
t&)' 
main.cpp:(.text+0x4e60): undefined reference to `std::allocator<char>::~allocator()' 
main.cpp:(.text+0x4e70): undefined reference to `__cxa_end_cleanup' 
main.cpp:(.text+0x4e98): undefined reference to `std::basic_string<char, std::char_tra 
its<char>, std::allocator<char> >::~basic_string()' 
main.cpp:(.text+0x4eb8): undefined reference to `std::basic_string<char, std::char_tra 
its<char>, std::allocator<char> >::~basic_string()' 
main.cpp:(.text+0x4ed0): undefined reference to `std::allocator<char>::~allocator()' 
main.cpp:(.text+0x4ef4): undefined reference to `std::allocator<char>::~allocator()' 
main.cpp:(.text+0x4f04): undefined reference to `__cxa_end_cleanup' 
C:\Users\Bill\AppData\Local\Temp\cctQCagR.o: In function `load_files()': 
main.cpp:(.text+0x5164): undefined reference to `std::allocator<char>::allocator()' 
main.cpp:(.text+0x517c): undefined reference to `std::basic_string<char, std::char_tra 
its<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> cons 
t&)' 
+1

Bạn đang liên kết với thư viện chuẩn C++, phải không? –

+0

Bạn có thể dán lệnh bạn đang sử dụng để biên dịch không? – Anthony

+0

Sử dụng: arm-none-linux-gnueabi-gcc ............ để biên dịch –

Trả lời

55

Tôi tin rằng bạn đang cố gắng để biên dịch main.cpp với gcc thay vì g ++.

#include <string> 
#include <stdio.h> 
int main() 
{ 
    std::string bla; 
    bla = "BLA BLA"; 
    printf("%s\n",bla.c_str()); 
    return 0; 
} 

Nếu bạn tạo đoạn mã trên với gcc bạn gặp lỗi bạn đề cập. Nếu bạn sử dụng g ++ nó xây dựng ok, điều này có ý nghĩa vì g ++ sẽ đảm bảo tất cả các công cụ thích hợp mà nó đặt lại với nhau khi xây dựng C++.

+0

Việc xem xét gcc để loại bỏ nó là gì? –

18

Bạn cần liên kết nhị phân của mình với libstdC++. Bạn cần xác định rõ ràng nó trong dòng lệnh nếu sử dụng gcc. gcc -lstdc++ tmp.cpp
Nếu sử dụng g ++, libstdC++ sẽ được liên kết theo mặc định.
g++ tmp.cpp