Я использую 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
Однако он определенно связан с lib и требует наличия dll, как это видно с Dependency Walker (не говоря уже о том, что я звоню в него) ... опять же, не уверен, связано ли это с этим, но тоже хотел выкинуть его туда.
Я ценю любой совет / помощь по этому вопросу. Спасибо!