Vivek的Vcam Capture Source Filtet的构建链接错误

问题描述 投票:0回答:1

我正在努力建立链接 Vivek的Vcam采集源过滤器 在Windows 10上用Visual Studio 2019(16.5.5版本)为x64平台。

我已经构建了BaseClasses项目,没有问题)。

这些是当前的构建错误。

>Dll.cpp
>(folder)\vsprojects\sdk7samples\baseclasses\transip.h(214,55): error C4596: 'Copy': illegal qualified name in member declaration
>(folder)\vsprojects\sdk7samples\baseclasses\videoctl.h(54,44): error C2385: ambiguous access of '{dtor}'
>(folder)\vsprojects\sdk7samples\baseclasses\videoctl.h(54,44): message : could be the '{dtor}' in base 'IDirectDraw'
>(folder)\vsprojects\sdk7samples\baseclasses\videoctl.h(54,44): message : or could be the '{dtor}' in base 'CUnknown'
>(folder)\vsprojects\sdk7samples\baseclasses\videoctl.h(54,47): error C3254: 'CAggDirectDraw': class contains explicit override '{dtor}' but does not derive from an interface that contains the function declaration
>(folder)\vsprojects\sdk7samples\baseclasses\videoctl.h(54,47): error C3244: 'CAggDirectDraw::~CAggDirectDraw(void)': this method was introduced by '<Unknown>' not by 'IDirectDraw'
>(folder)\references\vcam\Filters\Dll.cpp(48,5): error C2440: 'initializing': cannot convert from 'const wchar_t [7]' to 'LPWSTR'
>(folder)\references\vcam\Filters\Dll.cpp(48,5): message : Conversion from string literal loses const qualifier (see /Zc:strictStrings)
>Filters.cpp
>(folder)\vsprojects\sdk7samples\baseclasses\transip.h(214,55): error C4596: 'Copy': illegal qualified name in member declaration
>(folder)\vsprojects\sdk7samples\baseclasses\videoctl.h(54,44): error C2385: ambiguous access of '{dtor}'
>(folder)\vsprojects\sdk7samples\baseclasses\videoctl.h(54,44): message : could be the '{dtor}' in base 'IDirectDraw'
>(folder)\vsprojects\sdk7samples\baseclasses\videoctl.h(54,44): message : or could be the '{dtor}' in base 'CUnknown'
>(folder)\vsprojects\sdk7samples\baseclasses\videoctl.h(54,47): error C3254: 'CAggDirectDraw': class contains explicit override '{dtor}' but does not derive from an interface that contains the function declaration
>(folder)\vsprojects\sdk7samples\baseclasses\videoctl.h(54,47): error C3244: 'CAggDirectDraw::~CAggDirectDraw(void)': this method was introduced by '<Unknown>' not by 'IDirectDraw'
>Done building project "vcam.vcxproj" -- FAILED.

在C++附加的包含目录上,我有"...dsdk7samples\baseclasses\;%(AdditionalIncludeDirectories)"。

在Linker的附加库目录上,我有".dsdk7samples\baseclasses\x64\Release\;%(AdditionalLibraryDirectories)"。

在Linker的附加依赖项中,我添加了strmbasd.lib(调试配置文件)strmbase.lib(发布配置文件)。

有什么建议吗?谢谢!

c++ visual-c++ webcam video-capture directshow
1个回答
1
投票

尝试在属性中禁用 "一致性模式"(From Yes(/permissive-)No).

我可以重现这个问题,然后在禁用它后得到它的编译。

这个编译器选项在Visual Studio 2017 15.5及以后的版本中是默认设置的,但在早期版本中它不是默认设置的。

根据 放任 文档。

默认情况下,在Visual Studio 2017 15.5版及以后版本创建的新项目中,设置了permissive-选项。在较早的版本中,它不是默认设置的。当设置该选项时,当在你的代码中检测到非标准语言结构时,编译器会产生诊断错误或警告,包括C++11前代码中的一些常见错误。

...由于各种源代码一致性的原因,旧版本的SDK可能会在permissive-下编译失败。

© www.soinside.com 2019 - 2024. All rights reserved.