使用Visual Studio 2015构建GMFBridge应用程序

时间:2017-04-04 01:35:22

标签: c++ visual-studio-2015 compiler-errors directshow

我尝试将此邮件发送到Geraint Davies,但其网站上的电子邮件地址因“用户未知”错误而退回。

我正在尝试使用Visual Studio 2015从站点上可用的源构建GMFBridge及其应用程序.VS将项目文件转换为新格式,没有明显错误,但构建过程无效

我已下载并安装了Windows Template Library(WTL),found streams.h并将其添加到Include目录(< gripe >为什么可以这是在解决方案级别完成的,所以项目的所有都会继承它吗?< / gripe >)和我{{ 3}}到GMFBridge依赖于它的解决方案。

链接GMFBridge的未解决的外部错误,例如CBaseFilter::FindPin,当我更正GMFBridge项目的added BaseClasses as a project时就离开了。

构建strmbasd.lib生成了2个警告,因为'GetVersionExtW' was declared deprecated。我意识到这些不是 GMFBridge 问题,但是它们在构建它时会产生麻烦,因为必须将BaseClasses库构建为依赖项。

代码中有一堆 GMFBridge 编译错误:

#if (NTDDI_VERSION >= NTDDI_VISTA) && !defined(_USING_V110_SDK71_) && !defined(_ATL_XP_TARGETING)
    return LCMapStringEx(lpLocaleName, dwMapFlags, lpSrcStr, cchSrc, lpDestStr, cchDest, lpVersionInformation, lpReserved, sortHandle);
#else
    // use LCMapStringEx if it is available (only on Vista+)...
    typedef int (__stdcall *PFNLCMAPSTRINGEX)(LPCWSTR, DWORD, LPCWSTR, int, LPWSTR, int, LPNLSVERSIONINFO, LPVOID, LPARAM);
    IFDYNAMICGETCACHEDFUNCTIONTYPEDEF(L"kernel32.dll", PFNLCMAPSTRINGEX, "LCMapStringEx", pfLCMapStringEx)
    {
        return (*pfLCMapStringEx)(lpLocaleName, dwMapFlags, lpSrcStr, cchSrc, lpDestStr, cchDest, lpVersionInformation, lpReserved, sortHandle);
    }

    // ...otherwise fall back to using LCMapString.
    return LCMapStringW(_AtlDownlevelLocaleNameToLCID(lpLocaleName), dwMapFlags, lpSrcStr, cchSrc, lpDestStr, cchDest);
#endif

在我看来好像编译器可能正在使用错误的分支。当我将_USING_V110_SDK71_添加到C ++预处理程序指令时, 一组问题消失了,但我确信黑客攻击编译器版本不是正确的解决方案。

构建 GMFPlay GMFPreview 应用程序时,我仍然遇到48次编译错误。它们看起来完全归因于HMONITORMONITORINFOMONITOR_DEFAULTTONEAREST未定义。我在 social.msdn 上找到了一个页面。 Treat wchar_t as built-in type建议的解决方案是设置我尝试的WINVER=0x0500,但是产生了“WINVER重新定义”警告 - 并且,正如我所料,并没有解决任何问题。我在Build Errors after Converting project from vs2005 to vs2010搜索了MONITOR_DEFAULTTONEAREST,而出现的所有是两个未回答的问题。

此时,我对如何解决这些问题感到茫然,网络搜索似乎没有产生有用的结果。我不是在问正确的问题吗?

正如MSDN DirectShow ForumsRoman R中指出的那样,this article网站上有预先构建的二进制文件,所以此练习现在基本上没有实际意义。但是,正如上述文章中的OP所指出的,将调试到 GMFBridge代码需要的不仅仅是可用于链接的DLL。此外,修复这些问题现在将使代码适应未来的架构(任何人都有128位?)很多比他们只是在地毯下扫描更容易。

0 个答案:

没有答案