我正在使用 VC2010 编译的一个应用程序中使用 libVLC(也尝试过 VC2008),我的应用程序的调试模式运行良好,但是一旦我编译到发布模式并尝试调用 libVLC,我就会崩溃。我在 vlc 论坛上寻求帮助,有人提到这通常指向调用约定差异,但是我不确定要检查什么以查看是否是这种情况或更重要的是如何解决它。
一些注意事项:
- 我正在使用 Ubuntu 编译 libVLC 并遵循 libVLC wiki 上的操作指南。
- 我在 C++ 文件中使用 libVLC。
- 我尝试在有和没有调试信息的情况下编译 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 所见(更不用说我正在调用它).. 再次不确定这是否相关但也想把它扔在那里。
我很感激任何关于这个的建议/帮助。谢谢!