Tôi đang sử dụng máy Linux x86_64 để xây dựng chương trình của mình. Tôi đã liên kết thư viện được chia sẻ với tệp thực thi. Trong dự án của tôi, tôi đang gọi một hàm đã khai báo vector<string>
bên trong hàm. Chương trình của tôi bị giết khi hàm đó được gọi. Khi gỡ lỗi thông qua GDB dưới đây là đầu ra tôi nhận được.Tín hiệu nhận được chương trình SIGILL, Hướng dẫn bất hợp pháp
Program received signal SIGILL, Illegal instruction.
0x00002aaaac4d2be7 in OC_Catalog_c::File_ToText (this=0x611aa0) at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:87
87 : _Tp_alloc_type(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0)
(gdb) bt
0 0x00002aaaac4d2be7 in OC_Catalog_c::File_ToText (this=0x611aa0) at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:87
Đây có phải là vấn đề biên soạn thư viện được chia sẻ của tôi không ?? Đâm đầu đủ vào nó. Hãy giúp tôi.
-Chaks
Thêm biết thêm cho các truy vấn của bạn: Vâng, chức năng mà tôi đang kêu gọi File_ToText là một hàm ảo trong lớp OC_Catalog_c. Biến thành viên của lớp khác có đối tượng của lớp OC_Catalog_c cũng có chức năng ảo File_ToText.Using đối tượng mà tôi đang gọi hàm File_ToText của OC_Catlog_c từ hàm File_ToText ảo. Tôi sẽ hiển thị một đoạn mã:
class Oc_Catalog_c
{
virtual vector<string> File_ToText (void) const;
}
class B
{
const OC_Catalog_c* m_pCatalog;
virtual vector<string> File_ToText (void) const;
}
vector<string> B::File_ToText(void) const
{
vector<string> a_SubData;
a_SubData = m_pCatalog->File_ToText();
}
Vui lòng bắt đầu dán đoạn trích để bắt đầu và tìm hiểu thêm về thư viện. – lpapp
Bạn sử dụng tùy chọn nào khi biên dịch bằng g ++? Bạn cũng đang xây dựng thư viện được chia sẻ hoặc bạn có nhận được nó ở một nơi khác không? – idfah
Nó cũng có thể hữu ích để biết bạn đang chạy bộ xử lý nào và bản phân phối và phiên bản Linux nào bạn đang sử dụng. – cordoro