2010-01-19 47 views
41

Tôi đang cố sử dụng xlsLib để tạo bảng tính Excel từ ứng dụng C++.Từ thư viện tĩnh MinGW (.a) đến thư viện tĩnh Visual Studio (.lib)

Sự cố là biên dịch xlsLib, tôi cung cấp tệp .a (thư viện tĩnh GCC, được tạo bởi MinGW). Tuy nhiên, ứng dụng của tôi phụ thuộc vào API khác (PhysX) chỉ biên dịch với Visual Studio.

Do đó: có thể chuyển đổi thư viện tĩnh GCC (xlslib.a) thành tệp thư viện tĩnh Visual Studio (xlslib.lib) không?

Trả lời

-1

Theo như tôi biết, chúng giống nhau. Các tệp .lib của Visual Studio cũng là ar các tệp lưu trữ chứa các tệp đối tượng. Bạn đã thử đổi tên tệp chưa? :)

+7

Không, đơn giản là định dạng của lưu trữ thực tế hơi khác. – laura

+0

Tôi tin rằng đó cũng là một công cụ lib.exe đi kèm với studio trực quan. Sử dụng tệp .def, bạn có thể chuyển đổi .a thành .lib. – jiggunjer

32

Lưu trữ thư viện tĩnh được tạo bằng MinGW thường tương thích với trình biên dịch/trình liên kết Visual C++. Vì vậy, bạn sẽ có thể sử dụng chúng trực tiếp bằng cách thêm .a tập tin vào mối liên kết đầu vào trong thuộc tính dự án của bạn trong Visual Studio:

  1. Tới dự Properties (Alt-F7).
  2. Trên hộp bên trái, mở Configuration Properties->Linker->Input
  3. Add danh sách tất cả .a tài liệu lưu trữ bạn cần phải sử dụng
  4. Bạn có thể cần thêm cũng thư viện libgcc.a MinGW của

Ngoài ra, có thể xảy ra các vấn đề liên quan đến hỗn hợp C thư viện thời gian chạy properties of C/C++->Code Generation->Runtime Library, nhưng điều này phụ thuộc vào cấu hình xây dựng bạn sử dụng với MinGW. Đôi khi nó là cần thiết để liên kết với libmsvcrt.a từ MinGW nhưng trong nhiều trường hợp (nếu không nhất) nó gây ra vấn đề.

Cuối cùng, liên kết MinGW và Visual C++ hỗn hợp này thường hoạt động nhưng đối với các mô-đun C và nó không hoạt động đối với C++, theo như tôi biết.

+0

nhưng sử dụng .a làm cho .exe của tôi không thể gỡ lỗi "Không thể tìm thấy thông tin gỡ lỗi". – onmyway133

+3

@ onmyway133 kiểm tra xem biểu tượng gỡ lỗi có còn tồn tại hay không. Bạn có thể sử dụng ví dụ: 'nm --debug-syms', và nếu nhị phân bị tước đi, nó nói« no symbols ». –

+1

việc thêm libgcc.a là quan trọng đối với tôi – meolic

4

nhưng sử dụng .a làm cho .exe của tôi không thể gỡ lỗi "Không thể tìm thấy thông tin gỡ lỗi". - entropy 22 tháng 5 lúc 12:27

đó là do thư viện .a không bao gồm thông tin gỡ lỗi cần thiết để gỡ lỗi. bạn cần phải nói cho trình biên dịch thêm thông tin gỡ lỗi khi biên dịch nếu bạn muốn gỡ lỗi nó. đối với mingw, bạn cần phải thêm "-g" vào CFLAGS khi bạn chạy "make", như "make CFLAGS="-g""

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