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

.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에서 정상 동작하는 것은, 원래 정상 동작하지 않아야 할 것 같은데 정상 동작해서 그 부분이 의문이라는 건가요?
정성태

... 46  47  48  49  50  51  52  53  54  55  [56]  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
1283김영대7/3/201421408안녕하십니까 정성태님 죄송하지만 SmartClient 에 관한 질문이 있습니다. [9]
1282(non...7/2/201418433(글쓴이의 요청으로 삭제합니다.) [2]
1281(non...7/1/201419631(글쓴이의 요청으로 삭제합니다.) [4]
1280동동이6/25/201419071안녕하세요. ocx의 비동기 또는 쓰레드에서 호출 [1]
1279(non...6/23/201419428(글쓴이의 요청으로 삭제합니다.) [17]
1278이상식6/19/201420584.net DLL 내 자바스크립트를 수정 또는 재정의 할 수 있을까요? [3]
1277김솔지6/18/201417334silverlight에서 datagrid, listbox질문이여 [2]
1276정우석6/16/201416952쿠키 [1]
1274김솔지6/10/201421424배포 페이지 url을 얻고 싶습니다. [8]
1272이훈모6/7/201416221정말 어려운 상황에 직면했습니다. [1]
1270Jong...6/2/201426415C#과 C++을 이용한 Image 처리. [13]
1269김아영5/29/201417007InitializeComponent 함수 호출 지연 현상 [5]
1268솔솔5/27/201416498smart client [1]
1266김솔지5/22/201418755clickonce 수정에 대해 알고싶습니다. [2]
1265이은아5/22/201423199DataGridView 헤더를 두줄이상으로 하고싶습니다. [1]파일 다운로드1
1264김인호5/18/201421650소스코드 및 예제그림 zip 파일 [1]
1263이영종5/15/201418835159페이지 오타인것 같습니다 [5]
1262(non...5/4/201419703(글쓴이의 요청으로 삭제합니다.) [10]
1261이근주5/4/201417358다시 한번 질문드릴께요. [2]
1259이근주5/1/201416989도서 오류인 것 같네요.. [1]
1258최세정4/28/201419642안녕하세요~php module 오류로 고민하다가 여기까지 왔네요..ㅜㅜ [2]
1252popo4/21/201418938바인딩 질문입니다. [2]
1251(non...4/20/201423118(글쓴이의 요청으로 삭제합니다.) [11]
1249홍용규4/17/201423335app.config 파일 관련 질문 있습니다. [2]
1246(non...3/30/201419208(글쓴이의 요청으로 삭제합니다.) [1]
1245POPO3/26/201418483Http 프로토콜 관련 질문 입니다. [1]
... 46  47  48  49  50  51  52  53  54  55  [56]  57  58  59  60  ...