성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] 정적 분석과 함께, 이제는 실행 시 성능 분석까지 (비록 Azu...
[정성태] .NET Source Browser를 이용해 Roslyn 소스 ...
[정성태] Experimental C# Interceptors: AOT &...
[정성태] .NET Conf 2023 (Day 2) - Tiny, fast...
[정성태] The end of the Tye Experiment #1622...
[정성태] This is a simple app that converts ...
[정성태] Wrathmark: An Interesting Compute W...
[정성태] FFmpeg Filters Every Youtuber Needs...
[정성태] 일단, PInvokeStackImbalance 오류가 발생했다는...
[Heegyoo Lee] 코드 자체는 동작하는 것처럼 보이는데요. (어떤 때는 시그니쳐가...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>Visual Studio 2022 - DirectShow 예제 컴파일(WAV Dest)</h1> <p> 예전에 소개한,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Realtek 사운드 장치에서 재생되는 오디오를 GraphEditor로 녹음하는 방법 ; <a target='tab' href='https://www.sysnet.pe.kr/2/0/1631'>https://www.sysnet.pe.kr/2/0/1631</a> </pre> <br /> <a target='tab' href='https://learn.microsoft.com/en-us/windows/win32/directshow/wavdest-filter-sample'>WAV Dest 구성요소</a>는 현재 github에서 소스코드를 구할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > WAV Dest ; <a target='tab' href='https://github.com/microsoft/Windows-classic-samples/tree/main/Samples/Win7Samples/multimedia/directshow/filters/wavdest'>https://github.com/microsoft/Windows-classic-samples/tree/main/Samples/Win7Samples/multimedia/directshow/filters/wavdest</a> </pre> <br /> 원래 저 프로젝트는 Visual Studio 2010용으로 만들어져 있어 현재는 프로젝트 파일을 2022로 마이그레이션을 해야 합니다. (물론, 2022에서 프로젝트를 열면 자동으로 해줍니다.)<br /> <br /> 이후 빌드하면 이런 에러가 나오는데요,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Rebuild started... 1>------ Rebuild All started: Project: WavDest, Configuration: Debug x64 ------ 1>C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\Microsoft.Cpp.Analysis.props(24,5): warning MSB4211: The property "MsvcAnalysisPluginPath" is being set to a value for the first time, but it was already consumed at "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\Microsoft.CodeAnalysis.Extensions.props (33,5)". 1>cl : command line warning D9035: option 'Gm' has been deprecated and will be removed in a future release 1>wavdest.cpp 1>C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(1096,5): error MSB6006: "link.exe" exited with code 1104. 1>LINK : fatal error LNK1104: cannot open file 'strmbasd.lib' 1>Done building project "WavDest.vcxproj" -- FAILED. ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ========== ========== Rebuild started at 9:42 AM and took 02.792 seconds ========== </pre> <br /> 프로젝트를 보면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > <AdditionalDependencies><span style='color: blue; font-weight: bold'>..\..\BaseClasses\Debug\strmbasd.lib</span>;winmm.lib;msvcrtd.lib;%(AdditionalDependencies)</AdditionalDependencies> </pre> <br /> ".\Windows-classic-samples\Samples\Win7Samples\multimedia\directshow\baseclasses" 프로젝트에 대한 의존성이 걸려 있으므로 baseclasses 프로젝트를 먼저 빌드해야 합니다. 이후 다시 WavDest를 빌드하면 여전히 오류가 발생하는데요,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Rebuild started... 1>------ Rebuild All started: Project: WavDest, Configuration: Debug x64 ------ 1>C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\Microsoft.Cpp.Analysis.props(24,5): warning MSB4211: The property "MsvcAnalysisPluginPath" is being set to a value for the first time, but it was already consumed at "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\Microsoft.CodeAnalysis.Extensions.props (33,5)". 1>cl : command line warning D9035: option 'Gm' has been deprecated and will be removed in a future release 1>wavdest.cpp 1> Creating library x64\Debug\WavDest.lib and object x64\Debug\WavDest.exp 1>strmbasd.lib(amfilter.obj) : error LNK2019: unresolved external symbol memcmp referenced in function "public: virtual long __cdecl CMediaSample::SetMediaType(struct _AMMediaType *)" (?SetMediaType@CMediaSample@@UEAAJPEAU_AMMediaType@@@Z) 1>strmbasd.lib(transfrm.obj) : error LNK2001: unresolved external symbol memcmp 1>strmbasd.lib(dllentry.obj) : error LNK2001: unresolved external symbol memcmp 1>strmbasd.lib(amvideo.obj) : error LNK2001: unresolved external symbol memcmp 1>wavdest.obj : error LNK2001: unresolved external symbol memcmp 1>strmbasd.lib(wxdebug.obj) : error LNK2001: unresolved external symbol memcmp 1>strmbasd.lib(combase.obj) : error LNK2001: unresolved external symbol memcmp 1>strmbasd.lib(mtype.obj) : error LNK2001: unresolved external symbol memcmp 1>wavdest.obj : error LNK2019: unresolved external symbol memcpy referenced in function "public: virtual long __cdecl CWavDestFilter::StopStreaming(void)" (?StopStreaming@CWavDestFilter@@UEAAJXZ) 1>strmbasd.lib(wxutil.obj) : error LNK2001: unresolved external symbol memcpy 1>strmbasd.lib(mtype.obj) : error LNK2001: unresolved external symbol memcpy 1>strmbasd.lib(amfilter.obj) : error LNK2001: unresolved external symbol memcpy 1>wavdest.obj : error LNK2019: unresolved external symbol memset referenced in function "public: virtual long __cdecl CWavDestFilter::StopStreaming(void)" (?StopStreaming@CWavDestFilter@@UEAAJXZ) 1>strmbasd.lib(mtype.obj) : error LNK2001: unresolved external symbol memset 1>strmbasd.lib(amfilter.obj) : error LNK2001: unresolved external symbol memset 1>msvcrtd.lib(gshandlereh4.obj) : error LNK2001: unresolved external symbol __CxxFrameHandler4 1>strmbasd.lib(mtype.obj) : error LNK2001: unresolved external symbol __CxxFrameHandler4 1>strmbasd.lib(amfilter.obj) : error LNK2001: unresolved external symbol __CxxFrameHandler4 1>strmbasd.lib(transfrm.obj) : error LNK2001: unresolved external symbol __CxxFrameHandler4 1>strmbasd.lib(wxlist.obj) : error LNK2001: unresolved external symbol __CxxFrameHandler4 1>wavdest.obj : error LNK2001: unresolved external symbol __CxxFrameHandler4 1>strmbasd.lib(wxdebug.obj) : error LNK2001: unresolved external symbol __CxxFrameHandler4 1>strmbasd.lib(wxutil.obj) : error LNK2001: unresolved external symbol __CxxFrameHandler4 1>strmbasd.lib(combase.obj) : error LNK2001: unresolved external symbol __CxxFrameHandler4 1>strmbasd.lib(wxdebug.obj) : error LNK2019: unresolved external symbol wcsrchr referenced in function "wchar_t * __cdecl wcsrchr(wchar_t *,wchar_t)" (?wcsrchr@@YAPEA_WPEA_W_W@Z) 1>strmbasd.lib(dllentry.obj) : error LNK2001: unresolved external symbol wcsrchr 1> Hint on symbols that are defined and could potentially match: 1> "wchar_t * __cdecl wcsrchr(wchar_t *,wchar_t)" (?wcsrchr@@YAPEA_WPEA_W_W@Z) 1>strmbasd.lib(wxdebug.obj) : error LNK2019: unresolved external symbol __imp___stdio_common_vswprintf referenced in function _vsnwprintf_l 1>strmbasd.lib(wxutil.obj) : error LNK2001: unresolved external symbol __imp___stdio_common_vswprintf 1>strmbasd.lib(dllsetup.obj) : error LNK2001: unresolved external symbol __imp___stdio_common_vswprintf 1>strmbasd.lib(dllentry.obj) : error LNK2001: unresolved external symbol __imp___stdio_common_vswprintf 1>strmbasd.lib(wxdebug.obj) : error LNK2019: unresolved external symbol __imp___stdio_common_vsprintf referenced in function _vsnprintf_l 1>strmbasd.lib(wxutil.obj) : error LNK2019: unresolved external symbol memmove referenced in function memmoveInternal 1>strmbasd.lib(amfilter.obj) : error LNK2001: unresolved external symbol _purecall 1>msvcrtd.lib(new_scalar.obj) : error LNK2019: unresolved external symbol _callnewh referenced in function "void * __cdecl operator new(unsigned __int64)" (??2@YAPEAX_K@Z) 1>msvcrtd.lib(new_scalar.obj) : error LNK2019: unresolved external symbol malloc referenced in function "void * __cdecl operator new(unsigned __int64)" (??2@YAPEAX_K@Z) 1>msvcrtd.lib(init.obj) : error LNK2019: unresolved external symbol _CrtDbgReport referenced in function _CRT_RTC_INIT 1>msvcrtd.lib(init.obj) : error LNK2019: unresolved external symbol _CrtDbgReportW referenced in function _CRT_RTC_INITW 1>msvcrtd.lib(dll_dllmain.obj) : error LNK2019: unresolved external symbol _initterm referenced in function "int __cdecl dllmain_crt_process_attach(struct HINSTANCE__ * const,void * const)" (?dllmain_crt_process_attach@@YAHQEAUHINSTANCE__@@QEAX@Z) 1>msvcrtd.lib(dll_dllmain.obj) : error LNK2019: unresolved external symbol _initterm_e referenced in function "int __cdecl dllmain_crt_process_attach(struct HINSTANCE__ * const,void * const)" (?dllmain_crt_process_attach@@YAHQEAUHINSTANCE__@@QEAX@Z) 1>msvcrtd.lib(dll_dllmain.obj) : error LNK2001: unresolved external symbol __C_specific_handler 1>msvcrtd.lib(utility.obj) : error LNK2001: unresolved external symbol __C_specific_handler 1>msvcrtd.lib(error.obj) : error LNK2019: unresolved external symbol strcpy_s referenced in function "void __cdecl _RTC_StackFailure(void *,char const *)" (?_RTC_StackFailure@@YAXPEAXPEBD@Z) 1>msvcrtd.lib(error.obj) : error LNK2019: unresolved external symbol strcat_s referenced in function "void __cdecl _RTC_StackFailure(void *,char const *)" (?_RTC_StackFailure@@YAXPEAXPEBD@Z) 1>msvcrtd.lib(error.obj) : error LNK2019: unresolved external symbol __stdio_common_vsprintf_s referenced in function _vsprintf_s_l 1>msvcrtd.lib(error.obj) : error LNK2001: unresolved external symbol __C_specific_handler_noexcept 1>msvcrtd.lib(throw_bad_alloc.obj) : error LNK2019: unresolved external symbol __std_exception_copy referenced in function "public: __cdecl std::exception::exception(class std::exception const &)" (??0exception@std@@QEAA@AEBV01@@Z) 1>msvcrtd.lib(throw_bad_alloc.obj) : error LNK2019: unresolved external symbol __std_exception_destroy referenced in function "public: virtual __cdecl std::exception::~exception(void)" (??1exception@std@@UEAA@XZ) 1>msvcrtd.lib(throw_bad_alloc.obj) : error LNK2019: unresolved external symbol _CxxThrowException referenced in function "void __cdecl __scrt_throw_std_bad_alloc(void)" (?__scrt_throw_std_bad_alloc@@YAXXZ) 1>msvcrtd.lib(delete_scalar.obj) : error LNK2019: unresolved external symbol _free_dbg referenced in function "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z) 1>msvcrtd.lib(tncleanup.obj) : error LNK2019: unresolved external symbol __std_type_info_destroy_list referenced in function "void __cdecl __scrt_uninitialize_type_info(void)" (?__scrt_uninitialize_type_info@@YAXXZ) 1>msvcrtd.lib(utility.obj) : error LNK2019: unresolved external symbol _seh_filter_dll referenced in function __scrt_dllmain_exception_filter 1>msvcrtd.lib(utility.obj) : error LNK2019: unresolved external symbol _configure_narrow_argv referenced in function "public: static int __cdecl __scrt_narrow_argv_policy::configure_argv(void)" (?configure_argv@__scrt_narrow_argv_policy@@SAHXZ) 1>msvcrtd.lib(utility.obj) : error LNK2019: unresolved external symbol _initialize_narrow_environment referenced in function "public: static int __cdecl __scrt_narrow_environment_policy::initialize_environment(void)" (?initialize_environment@__scrt_narrow_environment_policy@@SAHXZ) 1>msvcrtd.lib(utility.obj) : error LNK2019: unresolved external symbol _initialize_onexit_table referenced in function __scrt_initialize_onexit_tables 1>msvcrtd.lib(utility.obj) : error LNK2019: unresolved external symbol _register_onexit_function referenced in function _onexit 1>msvcrtd.lib(utility.obj) : error LNK2019: unresolved external symbol _execute_onexit_table referenced in function __scrt_dllmain_uninitialize_c 1>msvcrtd.lib(utility.obj) : error LNK2019: unresolved external symbol _crt_atexit referenced in function _onexit 1>msvcrtd.lib(utility.obj) : error LNK2019: unresolved external symbol _crt_at_quick_exit referenced in function at_quick_exit 1>msvcrtd.lib(utility.obj) : error LNK2019: unresolved external symbol _cexit referenced in function __scrt_dllmain_uninitialize_c 1>msvcrtd.lib(utility_desktop.obj) : error LNK2019: unresolved external symbol terminate referenced in function __scrt_unhandled_exception_filter 1>msvcrtd.lib(utility_desktop.obj) : error LNK2019: unresolved external symbol __current_exception referenced in function __scrt_unhandled_exception_filter 1>msvcrtd.lib(utility_desktop.obj) : error LNK2019: unresolved external symbol __current_exception_context referenced in function __scrt_unhandled_exception_filter 1>msvcrtd.lib(pdblkup.obj) : error LNK2019: unresolved external symbol _wmakepath_s referenced in function "int __cdecl GetPdbDllPathFromFilePath(wchar_t const *,wchar_t *,unsigned __int64)" (?GetPdbDllPathFromFilePath@@YAHPEB_WPEA_W_K@Z) 1>msvcrtd.lib(pdblkup.obj) : error LNK2019: unresolved external symbol _wsplitpath_s referenced in function "int __cdecl GetPdbDllPathFromFilePath(wchar_t const *,wchar_t *,unsigned __int64)" (?GetPdbDllPathFromFilePath@@YAHPEB_WPEA_W_K@Z) 1>msvcrtd.lib(pdblkup.obj) : error LNK2019: unresolved external symbol wcscpy_s referenced in function "int __cdecl GetPdbDllPathFromFilePath(wchar_t const *,wchar_t *,unsigned __int64)" (?GetPdbDllPathFromFilePath@@YAHPEB_WPEA_W_K@Z) 1>msvcrtd.lib(pdblkup.obj) : error LNK2019: unresolved external symbol __vcrt_GetModuleFileNameW referenced in function "struct HINSTANCE__ * __cdecl GetPdbDll(void)" (?GetPdbDll@@YAPEAUHINSTANCE__@@XZ) 1>msvcrtd.lib(pdblkup.obj) : error LNK2019: unresolved external symbol __vcrt_GetModuleHandleW referenced in function "struct HINSTANCE__ * __cdecl GetPdbDll(void)" (?GetPdbDll@@YAPEAUHINSTANCE__@@XZ) 1>msvcrtd.lib(pdblkup.obj) : error LNK2019: unresolved external symbol __vcrt_LoadLibraryExW referenced in function "struct HINSTANCE__ * __cdecl GetPdbDll(void)" (?GetPdbDll@@YAPEAUHINSTANCE__@@XZ) 1>x64\Debug\WavDest.dll : fatal error LNK1120: 43 unresolved externals 1>Done building project "WavDest.vcxproj" -- FAILED. ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ========== ========== Rebuild started at 9:46 AM and took 01.927 seconds ========== </pre> <br /> <a target='tab' href='https://www.sysnet.pe.kr/2/0/13310'>지난 글에 쓴 것처럼</a>, 이것은 WavDest 프로젝트가 기본적으로 "Ignore All Default Libraries" == "Yes (/NODEFAULTLIB)" 옵션을 가지고 있기 때문입니다. 따라서 그 글에서처럼 vcruntime.lib, ucrt.lib, libcmt.lib를 추가 지정하거나, 혹은 그냥 간단하게 ^^ "Ignore All Default Libraries" 설정을 "No"로 해주시면 됩니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 자, 그럼 빌드 후 생성한 dll에 대해 (관리자 권한으로) regsvr32 등록하면, (64비트로 WavDest를 빌드했다면 64비트의 "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64") graphedt.exe를 실행시켜 "Graph", "Insert Filters..." 메뉴를 선택해 "Direct Show Filters" 범주를 통해,<br /> <br /> <img alt='wavdest_1.png' src='/SysWebRes/bbs/wavdest_1.png' /><br /> <br /> "Wav Dest" 항목을 볼 수 있습니다. ^^<br /> <br /> <hr style='width: 50%' /><br /> <br /> 만약 RegSvr32.EXE 실행 시 이런 오류가 발생한다면?<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > RegSvr32 The module "WavDest.dll" was loaded but the call to DllRegisterServer failed with error code 0x80070005. For more information about this problem, search online using the error code as a search term. </pre> <br /> 관리자 권한으로 등록하지 않았기 때문입니다.<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1047
(왼쪽의 숫자를 입력해야 합니다.)