2013-04-22 17 views
7

Tôi đang cố gắng sử dụng một số chức năng từ ffmpeg và đang chạy vào các lỗi trình liên kết đàn hồi. Dưới đây là những gì tôi đã làm:Các bên ngoài chưa được giải quyết đang cố gắng sử dụng ffmpeg

  • Downloaded mới nhất 32-bit "Dev" xây dựng từ http://ffmpeg.zeranoe.com/builds/ (tức là ffmpeg-20.130.418-git-ee94362-win32-dev)
  • Tạo một "General - trống rỗng" dự án C++ trong Visual Studio 2012 Premium
  • Thêm thư mục [ffmpeg]/lib vào Trình liên kết -> Đầu vào -> "Thư mục Thư viện Bổ sung"
  • Đã thêm "swscale.lib; avutil.lib; avformat.lib; avdevice.lib; avcodec. lib; " để Linker -> Input -> "Dependencies bổ sung"
  • gia tăng sau dưới C++ -> General -> Bao gồm bổ sung Thư mục:
    • [ffmpeg]/include
    • [ffmpeg]/include/libswscale
    • [ffmpeg]/include/libavformat

Đây là main.cpp tôi:

#include "avformat.h" 

int main() 
{ 
    av_register_all(); 
} 

này không thành công với:

lỗi LNK2019: biểu tượng bên ngoài chưa được giải quyết "void __cdecl av_register_all (void)" (av_register_all @@ YAXXZ?) Được tham chiếu trong chức năng _main

Làm thế nào tôi có thể sửa chữa lỗi này?

+0

có thể trùng lặp của [http://stackoverflow.com/q/7514249/845568](http : //stackoverflow.com/q/7514249/845568) –

Trả lời

22

Như bạn đang sử dụng C++, bạn cần phải bao quanh ffmpeg bạn #include báo cáo với extern "C" như thế này:

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

Ugh, tôi đã thực sự thử điều đó trước đây và nó không hoạt động, có lẽ vì một số lỗi khác trong dự án. Bây giờ nó hoạt động ... cảm ơn. – Asik

+0

Cảm ơn bạn! Tôi cho rằng điều này khiến nó tìm kiếm các phiên bản "C" chưa được đặt trước của các biểu tượng thay vì các biểu tượng C++ được trang trí? – Deanna

+0

@Deanna Vâng, điều đó hoàn toàn đúng. Tôi rất vui vì bạn đã tìm thấy câu trả lời hữu ích. –