Incluir ffmpeg no projeto qt no windows faz com que o programa termine inesperadamente

Estou tentando incluir o ffmpeg no meu projeto qt no windows. Estou executando o QT4 e compilando com o Microsoft Visual Compiler 2010 em janelas de 32 bits 7. Estou tentando incluir o ffmpeg 2.8, que recebidev ecompartilhado downloads dezeranoe. Quando o executo, recebo a seguinte saída:

Starting (executable path)...
The program has unexpectedly finished.
(executable path) exited with code -1073741819

Eu sou capaz de produzir essa saída com o seguinte:

ffmpeg_test.pro:

QT += core
TARGET = ffmpeg_test

INCLUDEPATH += (ffmpeg dev path)/include
LIBS += -L(ffmpeg dev path)/lib
LIBS += -lavformat

SOURCES += main.cpp

main.cpp:

extern "C"
{
#ifndef __STDC_CONSTANT_MACROS
#define __STDC_CONSTANT_MACROS
#endif
#include <libavformat/avformat.h>
}

int main(int argc, char *argv[])
{
  av_register_all();
  return 0;
}

Coloquei os arquivos .dll da lixeira de compartilhamento ffmpeg na mesma pasta em que o QT cria o ffmpeg_test.exe. Também confirmei que eles foram encontrados usando o dependency walker, que mostra um ponto de interrogação quando não estão nesse diretório e o caminho do arquivo avformat-56.dll quando estão (o fato de os arquivos .dll serem encontrados não afeta a saída do programa).

O Walker de Dependência revela que algo estranho está acontecendo, pois não há funções esperadas, mas as funções encontradas no avformat-56.dll parecem corretas. Também executei o Dumpbin.exe / EXPORTS no avformat.lib e também parece bom (posso postar a saída se for útil). Vale a pena notar que incluí esta versão do ffmpeg em um aplicativo diferente nesta máquina; no entanto, não era um projeto qt. Esse projeto gerou seu arquivo make com o CMake em vez do QMake e foi criado com o Microsoft Visual C ++ 2010 em vez do QT Creator.

Também incluí outros pares .lib / .dll no qt e eles não têm problemas. Estou percebendo duas diferenças desses pares. Primeiro na pasta ffmpeg-dev lib, em vez de ter apenas arquivos .lib (como é o caso de todos os meus outros pares .lib / .dll), também tenho um arquivo .def e .dll.a para cada biblioteca. O segundo ffmpeg é uma biblioteca c, enquanto todas as minhas outras bibliotecas incluídas são c ++.

atualização 3/29:

Tentei substituir as linhas LIBS no meu .pro pelos dois itens a seguir:

LIBS += (ffmpeg dev path)/lib/avformat.lib

LIBS += (ffmpeg dev path)/lib/libavformat.dll.a

Ambos dão a mesma mensagem de erro. Eu também tentei adicionar o seguinte ao meu arquivo .pro também sem efeito.

DEFINES += __STDC_CONSTANT_MACROS QMAKE_CXX_FLAGS += -D_STDC_CONSTANT_MACROS

Além disso, tentei adicionar#define inline __inline para main.cpp como sugerido no ffmpeglocal na rede Internet. Qualquer idéia de coisas para tentar seria muito apreciada!

atualização 3/31:

Tentei começar de novo com um novo ambiente de compilação do Windows, mas o resultado permanece inalterado com o código de teste acima. (O novo ambiente foi capaz de executar um programa hello world).

Meu processo para configurar esse ambiente foi instalar uma versão nova do Windows 7. de 32 bits. Instale o Visual C ++ 2010 Express a partir doISO multifuncional do Visual Studio 2010 Express. InstalarQt 4.8.6 para janelas de 32 bits e Visual Studio 2010. E finalmente instalarQt Creator 2.5.2. Para configurar o Qt creator, entrei em tools-> options e disse onde encontrar o Qt 4.8.6 qmake. Eu baixei odev ecompartilhado cria para o ffmpeg 2.8 da Zeranoe. Eu estava faltandostdint.he inttypes então eu os baixei e coloquei os arquivos em / include / libavutil. Em seguida, corrigi qualquer arquivo de cabeçalho que reclamou de "stdint.h" ect. Em seguida, coloco os arquivos DLL do ffmpeg-2.8-win32-shared / bin na pasta em que o qt estava criando ffmpeg_test ffmpeg_test-build-desktop-Qt_4_8_6__4_8_6__Release / release.

questionAnswers(1)

yourAnswerToTheQuestion