Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: Sử dụng gcc g++ để tạo static library (.lib) cho Windows?

  1. #1
    Ngày gia nhập
    01 2008
    Nơi ở
    Gameloft Studio
    Bài viết
    294

    Mặc định Sử dụng gcc g++ để tạo static library (.lib) cho Windows?

    Trước giờ toàn chơi VC++ ko? Hôm nay có một số cái phải làm trên g++ mà cụ thể là dịch trên platforms MinGW32 tự nhiên thấy choáng quá.

    Dịch project ra .DLL thì ZC biết cách làm rồi. Nhưng dịch ra .lib (giống như glut32.lib hay opengl32.lib) để có 1 file.h include vào mà mò hoài ko ra. Hong lẽ đã viết thành DLL file rồi lại viết các hàm class callback nó lại thì mất công quá.

    Có bạn nào rành về g++ thì heo dùm mình nha.

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    - r2 không có Windows, nên không biết thử ra sao, r2 cho Z 1 ví dụ bên Linux không biết có phải ý của Z không.
    - Ví dụ library của r2 cần build tên "somelib", bên Linux r2 cần build ra 1 file có tên somelib.so ( <=> somelib.lib ) bên Windows, dùng g++ r2 build như sau :
    PHP Code:
    1.  g++ -shared somelib.cpp -o somelib.so
    Trong các chương trình tiếp sau r2 cần dùng library đó r2 cần có 1 subscript -l cho library của r2 thì r2 compile như sau :
    PHP Code:
    1. g++ example.cpp -o Test -L home/chan/Desktop/library/somelib.so

  3. #3
    Ngày gia nhập
    01 2008
    Nơi ở
    Gameloft Studio
    Bài viết
    294

    Trích dẫn Nguyên bản được gửi bởi RR
    g++ -shared somelib.cpp -o somelib.so
    Cái này nó sẽ dịch ra .dll đó (có nghĩa là .so của linux = .dll của windows ).

    Z đã thử đổi tên "somelib.a" hay "somelib.so" thành "somelib.lib" nhưng MS VC nó ko nhận ra vì đây ko phải là ".lib"

    Cái mà Z đang cần là làm cách nào từ Visual Studio có thể sử dụng lại các function đã viết trên g++ một cách nhanh chóng mà không cần phải khai báo lại các function, type từ file DLL đó bằng cách GetProcAddress sẽ rất mất công.

    Chỉ cần #include file .h vào và link tới file .lib là được. Giống như glut32 vậy đó.

    Mình có tìm và thấy được có người bày sử dụng cái dlltool.exe đi kèm với bộ MinGW nhưng mù tịt? hong biết sử dụng cái này làm sao nữa?

  4. #4
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Chỉ cần #include file .h vào và link tới file .lib là được. Giống như glut32 vậy đó.
    Cái này nếu r2 khai báo như trên thì khi r2 compile chỉ cần include và link tới library là xong. Nhưng r2 có lẽ hiểu ý Z, Z sẽ cần 1 tool để build nó, tương tự như khi Z build boost<> bằng bjam và boost build cho VC++. Nhưng cái đó thì dài dòng, có gì thi xong r2 sẽ thử trên Window trước.

  5. #5
    Ngày gia nhập
    01 2008
    Nơi ở
    Gameloft Studio
    Bài viết
    294

    Ùm khổ 1 cái là g++ thì nó hiểu khi mình -l file .so . Còn VC++ sao làm vậy được....

    Còn boost thì nói thật chưa vào giờ đụng tới nó nên RR nói cũng như ko à.

  6. #6
    Ngày gia nhập
    07 2006
    Nơi ở
    Hà Nội
    Bài viết
    138

    Mặc định Sử dụng gcc g++ để tạo static library (.lib) cho Windows?

    Hôm nay dọn dẹp mới phát hiện đề tài này. Tuy đã lâu nhưng mình xin chia sẻ cách mà mình làm như sau:

    Nếu muốn build một dự án viết trong gcc thành file .lib, có một cách làm như sau:

    Giả sử testlib.cpp được viết theo gcc, và muốn build nó thành file lib thì phải sử dụng compiler của Visual C++. Vào cmd, chuyển đến thư mục VC\bin, và làm theo các bước sau:

    Making:
    cl -EHsc -c testlib.cpp
    lib -out:testlib.lib testlib.obj

    Linking:
    cl -EHsc -c -I[path2lib] main.cpp

    Lưu ý:
    - Tham số -EHsc là exception model, không có tham số này, nó sẽ warning và lỗi tùm lum cả.
    - VC++ hoàn toàn cho phép build nhiều file thành 1 file lib
    Tất cả các câu hỏi của thành viên (không vi phạm luật lệ tham gia) gửi vào box Java, Linux nếu không thành viên nào trả lời hỗ trợ trong vòng 24h, ban quản trị sẽ trực tiếp hỗ trợ. Các bạn giới thiệu và loan tin giúp điều này

  7. #7
    Ngày gia nhập
    07 2009
    Nơi ở
    Thị trấn Lâm Thao - Phú Thọ
    Bài viết
    86

    mình thì dùng cách này
    dùng g++ dịch ra file dll như bình thường
    ta chỉ lấy file dll thôi
    chuyển qua vc hay masm cũng được
    cũng tạo ra project dll như vậy
    đặt tên các hàm export trùng tên như trong g++ nhưng thân hàm chỉ là rỗng
    dịch và chỉ lấy file lib
    okay

  8. #8
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Trích dẫn Nguyên bản được gửi bởi kidteam Xem bài viết
    mình thì dùng cách này
    dùng g++ dịch ra file dll như bình thường
    ta chỉ lấy file dll thôi
    chuyển qua vc hay masm cũng được
    cũng tạo ra project dll như vậy
    đặt tên các hàm export trùng tên như trong g++ nhưng thân hàm chỉ là rỗng
    dịch và chỉ lấy file lib
    okay
    Dùng dll thì không còn là vấn đề đâu bạn. Vấn đề là chúng ta muốn tạo ra static library bạn ah. Có rất nhiều lý do dẫn đến không phải lúc nào cũng sử dụng .dll được.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  9. #9
    Ngày gia nhập
    10 2008
    Nơi ở
    Quảng Trị
    Bài viết
    369

    Mình ko biết có nhớ đúng ko nhưng mà mình có đọc ở đâu đó nói rằng định dạng file .lib của gcc và msvc nó khác nhau nên nếu dùng gcc để build file .lib thì qua msvc ko link được và ngược lại, vậy nên nếu link bằng msvc thì phải build file .lib bằng msvc.
    Born to walk against the wind... Born to hear my name...
    Stand and fight... Live by your heart...
    Always one more try... I'm not afraid to die...
    Stand and fight... say what you feel...
    Born with a heart of steel ...

  10. #10
    Ngày gia nhập
    04 2011
    Bài viết
    81

    file object của gcc khác với visual C nên khi ra thư viện tĩnh là khác nhau hoàn toàn. gcc output ra lib.a. .a có nghĩa là archive là gói của nhiều file .o thành một file .a. Tốt nhất là nên sử dụng file dll thì cả 2 đều dễ nhận biết lẫn nhau hơn
    live free or die
    phamthechung0@gmail.com

Các đề tài tương tự

  1. error C1083: Cannot open type library file: Error loading type library/DLL
    Gửi bởi nguyenduykhanh1986 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 08-03-2012, 10:16 PM
  2. Cùng nhau hoàn thiện tiếng Việt cho Windows 8, Windows Live và Windows Store
    Gửi bởi msfan trong diễn đàn English for IT | Tiếng anh cho dân CNTT
    Trả lời: 1
    Bài viết cuối: 28-02-2012, 09:40 AM
  3. buil trong static library báo thiếu file .dll
    Gửi bởi xoycontinue trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 23-05-2011, 08:00 PM
  4. Sự khác nhau giữa Use MFC in Shared DLL và Use MFC in Static Library là gì?
    Gửi bởi chuong01 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 4
    Bài viết cuối: 18-10-2010, 12:40 AM
  5. Làm sao để tạo 1 project MFC với chế độ Windows Standard Library ở VS2010??
    Gửi bởi langman trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 28-09-2010, 11:37 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn