2012-02-03 84 views
8

Tôi đang sử dụng CDT Eclipse để cố gắng biên dịch một dự án với công cụ Ogre 3D. Nhưng bằng cách nào đó mingw không thể tìm thấy các thư viện tĩnh mà tôi liên kết.MinGW/Eclipse ld.exe không tìm thấy thư viện

Đây là những thông báo lỗi:

c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../mingw32/bin/ld.exe: cannot find -lzziplib_d

c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../mingw32/bin/ld.exe: cannot find -lzlib_d

c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../mingw32/bin/ld.exe: cannot find -lfreetype_d

... vv. Danh sách tiếp tục như thế này cho mỗi thư viện.

Như bạn có thể thấy, tôi đã nhận thức được (IMO) lạ "lib" và ".a" bổ sung các ld.exe dường như làm cho tự động. Các thư viện đều được đặt tên chính xác. Ví dụ: "freetype_d" thực sự là "libfreetype_d.a".

Tôi cũng đã thêm các đường dẫn chính xác cho các thư viện trước đây, như thế này:

-L"C:\Coding\Ogre\make-debug\sdk\lib\Debug\" -L"C:\Coding\Ogre\make-debug\sdk\lib\Debug\opt\"

Và mỗi tập tin thư viện là một trong hai thư mục này.

Đây là dòng lệnh đầy đủ của tôi như được hiển thị bởi Eclipse CDT:

g++ -L"C:\Coding\Ogre\make-debug\sdk\lib\Debug\" -L"C:\Coding\Ogre\make-debug\sdk\lib\Debug\opt\" -o "OgreTestMinGW" ./BaseApplication.o ./LowLevelOgre.o -lzziplib_d -lzlib_d -lfreetype_d -lFreeImage_d -lOIS_d.dll -lOgreMainStatic_d -lOgrePagingStatic_d -lOgrePropertyStatic_d -lOgreRTShaderSystemStatic_d -lOgreTerrainStatic_d -lRenderSystem_GLStatic_d -lPlugin_ParticleFXStatic_d -lPlugin_PCZSceneManagerStatic_d -lPlugin_OctreeZoneStatic_d -lPlugin_OctreeSceneManagerStatic_d -lPlugin_CgProgramManagerStatic_d -lPlugin_BSPSceneManagerStatic_d

tôi thiếu gì ở đây?

+1

Hahahaha ... Lỗi là "\" trong đường dẫn directoy. Tôi thay thế chúng bằng "/" và bây giờ nó hoạt động. Tôi rơi cho điều đó một lần duy nhất;) – TheSHEEEP

Trả lời

12

Trên Windows, khi bạn thêm đường dẫn thư viện "-L" và nhấp vào "Hệ thống tệp" Eclipse cung cấp cho bạn đường dẫn bằng "\", thay đổi thành "/" và nó sẽ hoạt động!

0

có vẻ như bạn nên cố gắng xóa "_d" khỏi tên thư viện và thêm -DDEBUG. Ngoài ra, các thư viện gỡ lỗi có thể được lưu trữ trong một thư mục ogre riêng biệt.

+1

Dòng lệnh bây giờ trông giống như sau: 'g ++ -L" C: \ Mã hóa \ Ogre \ make-debug \ sdk \ lib \ Debug \ "-L" C: \ Mã hóa \ Ogre \ make-debug \ sdk \ lib \ Gỡ lỗi \ opt \ "-DDEBUG -o" OgreTestMinGW "./BaseApplication.o ./LowLevelOgre.o -lzziplib -lzlib -lfreetype -lFreeImage -lOIS -lOgreMainStatic -lOgrePagingStatic -lOgrePropertyStatic -lOgreRTShaderSystemStatic -lOgreTerrainStatic -lRenderSystem_GLStatic' Vẫn cùng một lỗi: không thể tìm thấy thư viện. Trong mọi trường hợp, tại sao tôi nên xóa "_d"? Đó cũng là điều mà ld.exe diễn giải bằng cách nào đó? Tôi cũng nên xóa "_d" khỏi tên tệp trên đĩa chứ? – TheSHEEEP

+0

Nó cũng có vẻ liên kết không thể tìm thấy zlib và libs khác được shippend với mingw. Bạn có thể đăng đầu ra hoàn chỉnh của lệnh đó? Bạn có thể cần phải thêm -L

+1

Như tôi đã nói, mọi thư viện đơn lẻ nằm trong một trong hai thư mục mà tôi đã thêm với -L. Và mỗi một trong số chúng tôi tự biên dịch từ nguồn Ogre (và phụ thuộc Ogre). Điều đó bao gồm những người zlib. Họ chắc chắn ở đó. Ví dụ, có một "C: \ Coding \ Ogre \ make-debug \ sdk \ lib \ Debug \ opt \ RenderSystem_GLStatic_d.a" ' – TheSHEEEP

Các vấn đề liên quan