Я использую libVLC в одном из своих приложений, которое я компилирую с помощью VC2010 (также пробовал VC2008), режим отладки моего приложения работает отлично, но как только я компилирую в режиме выпуска и пытаюсь вызвать libVLC, я получаю сбой. Я попросил помощи на форумах vlc, и кто-то упомянул, что это обычно указывает на различия в соглашениях о вызовах, однако я не уверен, что нужно проверить, чтобы увидеть, так ли это, или, что более важно, как это исправить.
некоторые примечания:
- Я компилирую libVLC с помощью Ubuntu и следую инструкциям на вики libVLC.
- Я использую libVLC внутри файла C++.
- Я пытался скомпилировать libVLC с отладочной информацией и без нее.
- Я пробовал вызывать libvlc_get_version и libvlc_new в качестве первого вызова, оба вылетали.
Несмотря на то, что у меня нет символов в моей версии выпуска, я вижу стек вызовов, и он определенно запутался, поскольку он показывает функции в стеке, которые никогда не вызываются, что, кажется, указывает на неправильное соглашение о вызовах, но снова я Я не уверен, как это проверить/исправить.
Я не уверен, связано ли это, но другая проблема, с которой я столкнулся с libvlc, заключается в том, что я пытаюсь отложить загрузку dll (пробовал не делать этого для вышеуказанной проблемы, но это не имело значения), я добавляю флаги компоновщика: /DELAYLOAD:libvlc.dll /DELAYLOAD:libvlccore.dll
, но когда происходит связывание, я получаю следующие предупреждения:
LINK : warning LNK4199: /DELAYLOAD:libvlc.dll ignored; no imports found from libvlc.dll
LINK : warning LNK4199: /DELAYLOAD:libvlccore.dll ignored; no imports found from libvlccore.dll
Однако он определенно связан с библиотекой и требует dll, как видно из Dependency Walker (не говоря уже о том, что я звоню в нее).. опять же, не уверен, связано ли это, но хотел также выбросить ее туда.
Я ценю любые советы / помощь по этому вопросу. Спасибо!