Crash 使用VC2010修复libvlc发布模式崩溃
我在用VC2010编译的一个应用程序中使用了libVLC(也尝试了VC2008),我的应用程序的调试模式工作得很好,但一旦我编译到发布模式并尝试调用libVLC,我就会崩溃。我在vlc论坛上寻求帮助,有人提到这一点通常指向调用约定差异,但是我不确定要检查什么以确定是否是这种情况,或者更重要的是如何修复它 一些注意事项:Crash 使用VC2010修复libvlc发布模式崩溃,crash,calling-convention,libvlc,release-mode,Crash,Calling Convention,Libvlc,Release Mode,我在用VC2010编译的一个应用程序中使用了libVLC(也尝试了VC2008),我的应用程序的调试模式工作得很好,但一旦我编译到发布模式并尝试调用libVLC,我就会崩溃。我在vlc论坛上寻求帮助,有人提到这一点通常指向调用约定差异,但是我不确定要检查什么以确定是否是这种情况,或者更重要的是如何修复它 一些注意事项: 我正在使用Ubuntu编译libVLC,并遵循libVLC wiki上的操作指南 我在一个C++文件中使用LIVVLC。 我尝试过编译libVLC,有调试信息也有调试信息 我第
- 我正在使用Ubuntu编译libVLC,并遵循libVLC wiki上的操作指南 我在一个C++文件中使用LIVVLC。
- 我尝试过编译libVLC,有调试信息也有调试信息
- 我第一次尝试调用libvlc_get_version和libvlc_new,两个都崩溃了
/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,并且需要依赖项Walker所看到的dll(更不用说我正在调用它了)。。同样,我不确定这是否有关联,但我也想把它扔出去
我非常感谢您在这方面的任何建议/帮助。谢谢 我也遇到了同样的问题,在与IDA Disassembler深入研究之后,我发现linker抛出了所有libvlc导入。是的,增量标志将它们添加回,但正如您所说,这不是问题的解释 现在,我在设计一个驱动程序时也遇到了类似的情况,在这个驱动程序中,Release消除了函数指针和字符串。解决方案是将Linker\Optimization\References设置为No(/OPT:NOREF)。所以,链接器会留下所有引用,即使它认为它们没有被使用 当然,这解决了问题 于是又一个谜团解开了 致意
实际上,添加“/OPT:NOREF”也解决了这个问题,至少在我的例子中是这样。我认为这个问题可能是由dlltool的“问题”造成的,因为ffmpeg也有同样的问题(),而且像ffmpeg一样,libvlc(我猜)可能会从msvc生成带有“dlltool”而不是“lib.exe”的windows“lib”文件。dlltool的相关错误报告如下: 正如你声称“使用Ubuntu编译libVLC”,我想你可能遇到了同样的问题。希望能有帮助
顺便说一句,ffmpeg的官方发行版提供了“.def”文件,因此我可以使用msvc中的“lib.exe”重新生成“正确的”lib文件,并解决问题。但是,由于vlc的官方windows发行版不提供“.def”文件,并且我未能通过“dumpbin和lib”方法重建lib文件(dumpbin时失败,dll肯定有什么奇怪的地方),我不能做进一步的验证。我发现添加/增量到我的链接标志修复问题,但是我不明白为什么,直到我不认为这是一个解决方案。您可以使用中的.libs。libs有generate with,它是基于