2013-04-22 15 views
7

Bazı işlevleri ffmpeg'den kullanmaya çalışıyorum ve esnek linker hatalarına rastlıyorum. İşte ne yaptım:Çözümlenmemiş externals ffmpeg'i kullanmaya çalışıyor

  • son 32 bit "Dev" http://ffmpeg.zeranoe.com/builds/ dan inşa İndirildi (yani ffmpeg-20130418-git-ee94362-win32-dev)
  • "Genel - boş" düzenlendi C++ projesini de Visual Studio 2012 Premium
  • içine [ffmpeg] bağlayıcı için/lib klasörü -> Girdi -> "Ek Kütüphane Dizinler"
  • Eklendi "swscale.lib; avutil.lib; avformat.lib; avdevice.lib; avcodec. lib;" Bağlayıcıya -> Girdi -> "Ek bağımlılıklar"
  • Eklenen aşağıdaki altında C++ -> Genel -> Ek Dizinler Dahil:
    • [ffmpeg]/bulunmaktadır
    • [ffmpeg]/include/libswscale
    • #include "avformat.h" 
      
      int main() 
      { 
          av_register_all(); 
      } 
      
      : [ffmpeg]/Bu benim main.cpp olduğunu/

libavformat dahil

Bu başarısız:

hata LNK2019: Ben nasıl düzeltebilirim

_main işlevi başvurulan çözülmemiş dış sembol "boşluk __Cdecl av_register_all (boşluk)" (av_register_all @@ YAXXZ?) bu hata? Eğer C++ kullandığınız gibi

+0

Olası yinelenen [http://stackoverflow.com/q/7514249/845568](http : //stackoverflow.com/q/7514249/845568) –

cevap

22

, böyle extern "C" ile ffmpeg #include ifadeleri çevreleyen gerekir:

extern "C" 
{ 
    #include "avformat.h" 
} 
+3

Ugh, Aslında bunu daha önce denedim ve işe yaramadı, muhtemelen projedeki bazı hatalardan dolayı. Şimdi çalışıyor ... teşekkürler. – Asik

+0

Teşekkürler! Bunun, dekore edilmiş C++ sembolleri yerine sembollerin renklenmemiş "C" versiyonlarını aramasına neden olduğunu düşünüyorum. – Deanna

+0

@Deanna Evet, bu kesinlikle doğru. Cevabı faydalı bulmana sevindim. –

İlgili konular