2013-04-24 39 views
8

Tôi cần thư viện hình ảnh và tôi đã xem xét FreeImage, http://freeimage.sourceforge.net/. Tôi muốn liên kết nó tĩnh với ứng dụng của tôi.Liên kết FreeImage như một thư viện tĩnh trong VS2010?

Tôi đã thử tải xuống các tệp nhị phân và liên kết nó, nhưng tôi gặp lỗi liên kết 2019 khi tôi cố gắng gọi hàm của chúng, mặc dù tôi tích cực tôi đã liên kết chính xác.

Vì vậy, sau đó tôi đã cố tải xuống nguồn của mình, chuyển đổi "FreeImageLib.2008" thành VS2010 và xây dựng nó. Nó xây dựng chỉ tốt đẹp của riêng mình, nhưng tôi vẫn có cùng một vấn đề khi liên kết với nó, ứng dụng của tôi sử dụng nó vẫn còn khiếu nại về lỗi liên kết.

Tôi cũng đặt tất cả các cấu hình dự án để phù hợp với các dự án khác của tôi, vì vậy không có mâu thuẫn với/MDD hoặc/MTD, vv ..

tôi đã làm một số đào trong mã nguồn của họ và có macro như "FREEIMAGE_LIB "cho thấy nó nên được định nghĩa khi xây dựng một thư viện tĩnh, và nó được định nghĩa, nhưng nó vẫn không hoạt động.

Tôi đã tìm kiếm và không thể tìm thấy bất kỳ câu trả lời chắc chắn nào cho vấn đề này. Câu trả lời trên Getting FreeImage to work with Visual Studio 2010 không có sự khác biệt; Tôi đã xác định vĩ mô hoặc trước khi bao gồm các tiêu đề hoặc như là một đối số tiền xử lý nhưng nó dosnt làm việc.

Thư viện này không có nghĩa là được sử dụng làm thư viện tĩnh hay có thể là vấn đề gì? Có ai có thể liên kết FreeImage tĩnh trên VS2010 + không?

Cảm ơn

Trả lời

11

Có, tôi đã có thể liên kết FreeImage tĩnh trên một số phiên bản Visual Studio. Ở đây tôi mô tả cách tôi làm điều này thường.

Với FreeImage, theo mặc định, chúng ta có 8 lựa chọn để liên kết nó với ứng dụng của bạn:

FreeImage - liên kết động (bạn sẽ cần dll).

FreeImageLib - liên kết tĩnh.

Mỗi trong số này có thể được tạo bằng "Gỡ lỗi" hoặc với cấu hình "Phát hành" và cho nền tảng Win32 hoặc Win64.

Vì vậy, giả sử rằng chúng ta cần (Static & & Win32 & & Debug) và (Static & & Win32 & & Release) biến thể cho ứng dụng của chúng tôi. Cũng trong ứng dụng của chúng tôi, chúng tôi sử dụng động Runtime Library (theo mặc định, FreeImage thiết lập cho tĩnh đối với một số lý do) Làm thế nào chúng ta thường nhận nó:

  • Tải về và giải nén phiên bản mới (hoặc ít nhất là dọn dẹp distib cũ)

  • Mở FreeImage.2008.sln chọn TẤT CẢ trong số 10 dự án có Shift + nhấp. Sau đó, trong "Các thuộc tính của dự án/C++/Tạo mã", chúng tôi chọn/MDd cho cấu hình "Gỡ lỗi" và/MD cho "Bản phát hành".

  • Sau đó, chúng tôi đi đến "Menu/Xây dựng/hàng loạt xây dựng", chọn:

    FreeImageLib | Debug | Win32

    FreeImageLib | Release | Win32

và nhấn "Xây dựng".

  • Đợi các cấu hình đã chọn được tạo. Tất cả những gì chúng ta cần sẽ được sao chép vào thư mục FreeImage\Dist

  • trong các tập tin kiểm tra FreeImage\Dist thư mục: ngày tạo delete.me FreeImage.h FreeImage.lib FreeImaged.lib Kiểm tra và thời gian. Nó phải tươi nướng và nóng. Nếu không, hãy sao chép chúng từ FreeImage\Source\FreeImageLib\DebugFreeImage\Source\FreeImageLib\Release.

  • Trong ứng dụng chính thêm vào bao gồm và lib FreeImage\Dist và liên kết FreeImaged.lib để cấu hình gỡ lỗi và FreeImage.lib để phát hành.
  • Bao gồm trong tập tin nguồn:

    #define FREEIMAGE_LIB

    #include "FreeImage.h"

  • Cố gắng gọi FreeImage_Initialise(); FreeImage_DeInitialise();

  • Nó sẽ làm việc

Chúc mừng mã hóa!

+0

Làm việc cho tôi. Trong số những người khác (Magick ++, OIIO), FreeImage là dễ nhất để có được đi với. – pelesl

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