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

.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)
4936무개1/3/20189036책 내용 인용하는 것에 관한 질문이있습니다. [1]파일 다운로드1
4935몬난아12/28/201711761IIS 및 ASP.NET 이 서버에서의 동작방식? [2]
4934Ques...12/26/201722210C# 해상도에 따른 자동 사이즈 조절방법이 궁금합니다. [3]
4933Kay12/15/20179454C# VS 버전 에러 질문 드립니다. [1]파일 다운로드1
4932정환나라12/13/20179356vs2013에서 빌드한 com 컨트롤 객체를 닷넷 2.0에서 사용하려 합니다 [4]
4931Arvid12/12/201710447Visual Studio 2012 c# using문 참조 에러 [5]파일 다운로드1
4929김성대12/8/20178870app.config에 관한질문입니다. [1]
4928김성대12/7/20179493SQL Server 설치에러에 대한 질문입니다. [1]파일 다운로드1
4926heyh...12/6/20178779[삭제] ContextSwitchDeadlock????
4925ho12/5/20179298[삭제] WebBrowser로 드롭박스 로그인 페이지 탐색 시 발생한 문제에 대해 질문 올립니다.파일 다운로드2
4924몽중언12/3/20179711C# 디버깅 모드에서만 DB Insert가 되는 현상 질의 [6]
4923고요한11/23/20179816파일 확장자에 연결된 프로그램을 등록하는 방법에 대한 질문입니다. [2]
4922박성훈11/23/201710791시작하세요! C# 7.1 학습 방법 [3]
4921초보개발자11/20/20178041[삭제] 폼 사이즈 질문드립니다.
4920Ques...11/19/20179189IEnumerable 의 "지연된 평가" 에 관하여 질문드립니다. [2]파일 다운로드1
4919mskim11/16/20179518Split()을 이용하여 문자 구분 시 구분문자도 같이 저장하는 방법이 있나요? [2]
4917ho11/16/201710154WPF XAML 트리거 관련해 문의 드립니다. [3]
4918ho11/16/201710449    답변글 [답변]: 예제 프로젝트 첨부합니다. [4]파일 다운로드2
4916필승11/11/201710108기본 웹 브라우저 체크는 어떻게 해야 하나요? [2]
4915필승11/10/20179176WebBrowser 컨트롤 소리 출력 문의 드립니다. [2]
4914Ques...11/10/20179873c# 버튼 이벤트에 관하여 질문드립니다. [2]
4913Arvid11/8/201712311Log4Net 라이브러리를 이용하여 특정 기간이 지났을 때 자동 로그 삭제 기능 구현 질문 드립니다! [2]
4912조범희11/8/201711979C# FTP 다운로드중 에러 발생.. [2]파일 다운로드1
4911필승11/6/201710395WebBrowser 컨트롤 사용법에 대해 궁금합니다. [2]
4910진우11/6/20179963람다 초보 질문 드립니다. [2]
4909필승11/5/201710825TextBox에 관해 질문 드립니다. [5]
... 31  32  33  34  35  36  [37]  38  39  40  41  42  43  44  45  ...