2013-04-24 15 views
8

Resim kütüphanesine ihtiyacım var ve ben FreeImage, http://freeimage.sourceforge.net/'u arıyorum. Uygulamamla statik olarak bağlamak istiyorum.FreeImage'ı VS2010'da statik bir kütüphane olarak mı bağlama?

İkili dosyaları indirmeyi ve bağlantı kurmayı denedim, ancak bunların doğru bir şekilde bağlanmış olmasına rağmen, işlevlerini çağırmaya çalıştığımda 2019 bağlayıcı hatası alıyorum.

Bu yüzden kaynaklarını indirmeye çalıştım, "FreeImageLib.2008" dosyasını VS2010'a dönüştürdüm ve kurdum. Sadece kendi başına gayet iyi, ama yine de ona karşı bağlantı kurulurken aynı problem var, onu kullanan uygulama hala linker hataları hakkında şikayetleri kullanır.

Ben de diğer projeleri maç için tüm proje yapılandırmasını ayarlamak, bu yüzden vb/MDD veya/MTD, hiçbir çatışma var ..

Onların kaynağında biraz araştırma yaptık ve FREEIMAGE_LIB" gibi makro vardır "statik bir kütüphane oluşturulduğunda tanımlanması gerektiğini ve bunun tanımlandığını, ancak yine de işe yaramadığını öne sürüyor.

Bu konuya bir baktım ve bu soruna kesin bir yanıt bulamıyorum. Getting FreeImage to work with Visual Studio 2010'daki yanıt hiçbir fark yaratmaz; Makroyu, başlığı veya önişlemci argümanını eklemeden önce tanımlamıştım ama işe yaramıyor.

Bu kitaplık bir statik kitaplık olarak kullanılmak üzere tasarlanmamış mı, yoksa sorun ne olabilir? FreeImage'ı statik olarak VS2010 + 'ya bağlayabilmiş mi?

Teşekkür

cevap

11

Evet, birkaç Görsel stüdyo sürümlerinde statik olarak FreeImage bağlamak başardık. Burada genellikle bunu nasıl yaptığımı açıklarım. FreeImage ile

, varsayılan olarak, uygulamalarınızda bağlamak için 8 seçenek vardır:

FreeImage - Dinamik bağlantı (eğer dll gerekir).

FreeImageLib - statik bağlantı.

Bunların her biri "Debug" veya "Release" yapılandırmaları ve Win32 veya Win64 platformları için oluşturulabilir.

Yani, biz (Statik & & Win32 & & Debug) ve (Statik & & Win32 & & Yayın) Uygulamamıza varyantları ihtiyaç olduğunu varsayalım. Ayrıca bizim app biz genellikle got Nasıl Dinamik Runtime Library (varsayılan olarak, FreeImage nedense statik için ayarlanmış) kullanın:

  • indirin ve yeni bir sürümünü açmak (veya en azından eski distib temizlemek)

  • FreeImage.2008.sln Açık Shift + tıklama ile 10 projeden oluşan TÜMÜ seçin. Daha sonra "Proje (ler) Özellikler/C++/Kod oluşturma" da "Hata Ayıklama" yapılandırması için/MDd'yi ve "Sürüm" için/MD'yi seçeriz.

    FreeImageLib | Debug | Win32

    FreeImageLib | Release | Win32

ve basın "İnşa":

  • Sonra "Menü// Toplu yapı kurmak" gidin seçin.

    • Seçilen konfigürasyonlar için bekleyin. ihtiyacımız olan şey tüm FreeImage\Dist klasör onay dosyalarında FreeImage\Dist klasörün

    • içinde kopyalanacak: delete.me FreeImage.h FreeImage.lib FreeImaged.lib Kontrol oluşturma tarih ve saati. Taze pişmiş ve sıcak olmalı. Değilse, bunları FreeImage\Source\FreeImageLib\Debug ve FreeImage\Source\FreeImageLib\Release'dan kopyalayın.

    • Ana uygulamada, FreeImage\Dist dosyasını ekleyin ve FreeImaged.lib hata ayıklama yapılandırmaları ve FreeImage.lib bildirimleri için ekleyin.
    • kaynak dosyada ekleyin:

      #define FREEIMAGE_LIB

      #include "FreeImage.h"

    • deneyin FreeImage_Initialise(); FreeImage_DeInitialise();

    • aramaya O çalışmalıdır

    Mutlu kodlama!

  • +0

    Benim için çalıştı. Diğerleri arasında (Magick ++, OIIO), FreeImage ile gitmenin en kolay yolu. – pelesl

    İlgili konular