Microsoft MVP성태의 닷넷 이야기
MarshalDirectiveException 에 대한 질문입니다. [링크 복사], [링크+제목 복사]
조회: 853
글쓴 사람
남산
홈페이지
첨부 파일
 
.Net Framework 4.6 안전하지 않는 코드 허용 VS2019 입니다.

아래와 같은 코드가 있습니다.

    [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
    public unsafe delegate void av_log_set_callback_callback (void* @p0, int @p1,[MarshalAs((UnmanagedType)48)] string @p2, byte* @p3);
    public unsafe struct av_log_set_callback_callback_func
    {
        public IntPtr Pointer;
        public static implicit operator av_log_set_callback_callback_func(av_log_set_callback_callback func) => new av_log_set_callback_callback_func { Pointer =
        func == null ? IntPtr.Zero : Marshal.GetFunctionPointerForDelegate(func) };
    }
---------------------------------------------
[MarshalAs((UnmanagedType)48)] 은
UnmanagedType.LPUTF8Str) 이 4.6에서 정의 되어있지 않다고 해서 수정한 거구요.

그런데 이것이 Windows10에서는 정상적으로 작동하는데
Windows7 에서는 다음과 같은 에러가 뜹니다.

System.Runtime.InteropServices.MarshalDirectiveException: "Cannot marshal 'parameter #3': Invalid managed/unmanaged type combination (String parameters and return types must be paired with LPStr, LPWStr, LPTStr, BStr, TBStr, VBByRefStr, or AnsiBStr)."
(System.Runtime.InteropServices.MarshalDirectiveException : " '매개 변수 # 3'을 마샬링 할 수 없음 : 관리 / 비 관리 유형 조합이 잘못되었습니다 (문자열 매개 변수 및 반환 유형은 LPStr, LPWStr, LPTStr, BStr, TBStr, VBByRefStr 또는 AnsiBStr과 쌍을 이루어야합니다)." )

[MarshalAs((UnmanagedType)48)] string @p2 이 부분에서 나오는 에러로 추정되는데
이것이 같은 대상 Framework 4.6 를 설치하고 (Windows10에는 4.8까지 설치되어 있음)
Windows10에서는 정상 작동하고 Windows7에서는 에러가 나오는 이런 상황이 왜 나오는 답변 좀 부탁드립니다.
그리고 혹시 에러나오는 부분을 올바르게 변경할 수 있는 방법이 있는지요.

읽어주셔서 감사합니다.





donaricano-btn



[최초 등록일: ]
[최종 수정일: 2/21/2021]


비밀번호

댓글 쓴 사람
 



2021-02-21 05시09분
그러니까 해결하고 싶은 것은 결국 .NET 4.6이 설치된 Windows 7에서 오류가 난다는 게 문제 아닌가요? 사실 그 상황에서 오류가 나는 것은 당연한 것임을 본인도 아실 것입니다.

그리고 .NET 4.8이 설치된 Windows 10에서 정상 동작하는 것은, 원래 정상 동작하지 않아야 할 것 같은데 정상 동작해서 그 부분이 의문이라는 건가요?
정성태

1  2  [3]  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5510jay6/8/2021533string 문자열에 쌍따옴표(")를 넣고 싶습니다. [1]파일 다운로드1
5509한예지6/3/2021602ExeccuteNonQuery 질문있습니다! [2]
5508최재남6/3/2021618마우스 이벤트 관련 질문 좀 드리겠습니다. [6]
5507한예6/2/2021503static과 스택오버플로우 질문있습니다. [5]파일 다운로드1
5506이창석6/1/2021626센서의 값을 받아서 PC를 통해 모니터링 하는 것을 만들고 있습니다. [1]
5505kss5/31/2021505.net5에서 소멸자가 어떻게 바뀐건가요? [1]
5503xingTester5/24/2021615xingapinet 에 수정 요청 부탁 드립니다. [1]
5501한예지5/23/2021442IProgress 사용법이 궁금합니다. [2]
5500한예ㅈ5/23/2021551비동기 코드 흐름 질문있습니다. [3]
5498곰장어5/21/2021468List에 static 변수를 추가했을때의 궁금증 [3]파일 다운로드1
5497지평선5/20/2021493윈도우 배율을 알 수 있을까요? [1]
5496cs린이5/20/2021518C# 8.0 질문입니다. [2]파일 다운로드6
5495Natie5/13/2021481객체를 생성과 동시에 초기화 하는 방법 [1]
5494지예예지5/13/2021450비동기 코드 흐름이 궁금합니다! [2]
5493xingTester5/6/2021578xing api XQCSPAT00600 질문입니다 [4]파일 다운로드1
5492한예지5/5/2021671FromCurrentSynchronizationContext 관련 코드 질문있습니다! [2]
5491조우성5/4/20211157WinForm과 WPF의 성능차이 비교한 자료가 있을까요? [4]
5490한예지5/3/2021495UI 스레드의 Invoke 질문있습니다. [4]
5489저누4/28/2021626시작하세요 C# 9.0, 225페이지 구조체 관련 질문드립니다. [2]
5488종범4/27/2021734C# 비동기 함수 async, await 와 Task의 관계에 대해 질문 드립니다. [6]
5487진우4/27/2021576C# 엑셀 자동화 성능 향상 문의 [2]
5486지나가던사람4/26/2021631닷넷 구현 코드 관련 질문 [2]
5485이재원4/17/2021657교재 315페이지 내용 질문 [3]
5484Syong4/16/20211040윈폼 기반의 응용프로그램 dll 참조와 32,64bit 빌드 관련 문의 [4]
5483한예지4/15/2021586익명 형식과 var 관계 질문 있습니다. [2]
5482질문4/13/2021779WPF를 위한 MVVM toolkit 선택과 관련한 문의드립니다. [4]
1  2  [3]  4  5  6  7  8  9  10  11  12  13  14  15  ...