Microsoft MVP성태의 닷넷 이야기
MarshalDirectiveException 에 대한 질문입니다. [링크 복사], [링크+제목 복사],
조회: 14214
글쓴 사람
남산
홈페이지
첨부 파일
 

.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에서는 에러가 나오는 이런 상황이 왜 나오는 답변 좀 부탁드립니다.
그리고 혹시 에러나오는 부분을 올바르게 변경할 수 있는 방법이 있는지요.

읽어주셔서 감사합니다.









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


비밀번호

댓글 작성자
 



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

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

... 31  32  33  34  35  36  37  [38]  39  40  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
4945김성대1/26/201817129비동기 질문입니다. [1]파일 다운로드1
4944popo1/25/201816276[삭제] 스레드 안에서 Window Visibility 변경시 DialogResult 오류 질문
4943김성대1/22/201817721FromAsync 질문입니다. [1]
4942박현일1/19/201818761WPF 공부중 모르는 문법이 있어서요~^^; [2]
4941김성대1/18/201817674비동기예약어 실행오류관련입니다. [1]
4940plzh...1/10/201818376webbrowser2 를 이용한 sns 로그인 구현 관련 문의 [2]
4939이성일1/4/201820375ClickOnce 배포 후 업데이트 시 발생하는 오류에 대해 질문 드립니다. [2]
4938김성대1/3/201817972채팅 프로그램관련 질문입니다. [9]파일 다운로드1
4937Ques...1/3/201819748C# CPU 사용량 한계치 늘리는 방법 [2]
4936무개1/3/201816890책 내용 인용하는 것에 관한 질문이있습니다. [1]파일 다운로드1
4935몬난아12/28/201719715IIS 및 ASP.NET 이 서버에서의 동작방식? [2]
4934Ques...12/26/201731079C# 해상도에 따른 자동 사이즈 조절방법이 궁금합니다. [3]
4933Kay12/15/201717227C# VS 버전 에러 질문 드립니다. [1]파일 다운로드1
4932정환나라12/13/201717627vs2013에서 빌드한 com 컨트롤 객체를 닷넷 2.0에서 사용하려 합니다 [4]
4931Arvid12/12/201717451Visual Studio 2012 c# using문 참조 에러 [5]파일 다운로드1
4929김성대12/8/201716454app.config에 관한질문입니다. [1]
4928김성대12/7/201717072SQL Server 설치에러에 대한 질문입니다. [1]파일 다운로드1
4926heyh...12/6/201716392[삭제] ContextSwitchDeadlock????
4925ho12/5/201716486[삭제] WebBrowser로 드롭박스 로그인 페이지 탐색 시 발생한 문제에 대해 질문 올립니다.파일 다운로드2
4924몽중언12/3/201717037C# 디버깅 모드에서만 DB Insert가 되는 현상 질의 [6]
4923고요한11/23/201717509파일 확장자에 연결된 프로그램을 등록하는 방법에 대한 질문입니다. [2]
4922박성훈11/23/201718995시작하세요! C# 7.1 학습 방법 [3]
4921초보개발자11/20/201715591[삭제] 폼 사이즈 질문드립니다.
4920Ques...11/19/201715657IEnumerable 의 "지연된 평가" 에 관하여 질문드립니다. [2]파일 다운로드1
4919mskim11/16/201717244Split()을 이용하여 문자 구분 시 구분문자도 같이 저장하는 방법이 있나요? [2]
4917ho11/16/201716957WPF XAML 트리거 관련해 문의 드립니다. [3]
... 31  32  33  34  35  36  37  [38]  39  40  41  42  43  44  45  ...