Tôi đã cố gắng liên kết tĩnh với sqlite3 mà không thành công. Tôi đang sử dụng tiêu đề 'etc.c.sqlite3' và hỗn hợp sqlite3. Để tạo tệp .lib Tôi đã thử cả VC++ và MinGW-gcc, cả hai tệp này đều biên dịch thành công - nhưng cả hai đều tạo ra định dạng đối tượng COFF (optlink, mà DMD sử dụng, làm việc với OMF). Sau khi đọc tấn bài đăng trên 'digitalmars.D', tôi đã thử một số giải pháp khác nhau.Liên kết SQLite tĩnh với DMD (Windows x86)
cố gắng để chuyển đổi tập tin lib tạo ra với GCC, dẫn đến những biểu tượng không xác định như __divdi3 và __muldi3, đã không thể giải quyết việc này.
Cũng cố gắng này để chuyển đổi các tập tin sqlite3.o để * .obj, và sau đó sử dụng 'lib.exe' digitalmars - không thành công cũng
Cố objconv trên VC++ lib tạo ra thất bại vì: "SQLite lib là một thư viện nhập khẩu"
- Nếu tôi tải về DLL biên dịch sẵn từ sqlite.org và sử dụng implib, nó tạo ra sự tập tin ib, nhưng tên mangling dường như không phù hợp, bởi vì mặc dù tôi liên kết với thư viện tĩnh, tôi vẫn nhận được lỗi sqlite cùng (ví dụ như không xác định biểu tượng
_sqlite3_open
,_sqlite3_errmsg
,_sqlite3_close
...
Nếu tôi sử dụng coffimplib trên tệp thư viện được tạo VC++, chương trình sẽ tạo một tệp gần hết (~ 2KB) chỉ chứa rác (không có ký hiệu nào và hầu hết chỉ là giá trị 'null').
Nếu tôi làm như vậy với thư viện được tạo GCC, coffimplib than phiền về "không phải thư viện nhập" và không tạo tệp thư viện được chuyển đổi.
Nếu tôi sử dụng DMC để biên dịch hợp nhất sqlite3, biên soạn thất bại phàn nàn về tấn lỗi. Vì vậy, ở đây tôi, bị mắc kẹt trong hư không, không ai có bất cứ ý tưởng hoặc lời khuyên những gì có thể giải quyết này?
LƯU Ý: Tôi không muốn sử dụng DLL, nhưng liên kết tĩnh với sqlite (đối với các mối quan tâm kích thước thực thi).
gì sai sót nào bạn nhận được với trình biên dịch C? –
Tấn và tấn. Nó sẽ đòi hỏi cách quá nhiều để sửa chữa tất cả, với tất cả các loại lỗi (ví dụ như diễn viên bất hợp pháp, định danh không xác định) –
Tôi đã tải xuống và dùng thử DMC; nó xuất hiện các lỗi được gây ra bởi lỗi trong các tập tin tiêu đề Windows vận chuyển với DMC. –