Microsoft MVP성태의 닷넷 이야기
c++ .ilb에서 c# dll 호출 질문 드리겠습니다 (콜백함수 전달) [링크 복사], [링크+제목 복사]
조회: 3250
글쓴 사람
하태
홈페이지
첨부 파일
 
c++ 코드:

.h
public:
   void TestError(int eType, string sMsg); <--콜백용으로 사용될 함수

.cpp
처음진입함수()
{
   C#dll->Create(TestError); <---매개 변수가 다르다고 나옴(당연한 것 같습니다. c++ string과 c# string 마샬링해줘야하기때문에..인가요?..)
}


c#코드 :

public delegate void CallBackMsgISC4(int iType, string sMsg); <---델리게이트 선언

 CallBackMsgISC4 callBackMsg; <---델리게리트 변수 생성

public void Create(CallBackMsgISC4 callback) <-------해당 메써드를 c++에서 호출하여 파라미터로 c++ 콜백 메서드를 넘기고 싶습니다..하지만 매개변수가 달라서 넘길 수가 없네요.
{
   

}

검색을 해보았는데 검색실력이 부족한지.,., 좀처럼 답이 잘 안나오네요.,., 어떻게 콜백메서드를 넘갸야ㅐ할까요.

c#dll인 COM노출되어있고, 인터럽되어있습니다.
C++에서 다른 메서드는 잘 호출됩니다.








[최초 등록일: ]
[최종 수정일: 6/2/2020]


비밀번호

댓글 작성자
 



2020-06-03 09시08분
매개변수 형식은 C++의 것에 따라 맞춰줘야 하는데, 관련해서는 다음의 글을 참고하세요.

Customizing parameter marshaling
; https://docs.microsoft.com/en-us/dotnet/standard/native-interop/customize-parameter-marshaling

C#의 메서드를 Callback 함수로 넘기는 것은 다음의 글을 참고하시고.

How can I use EnumWindows to find windows with a specific caption/title?
; https://stackoverflow.com/questions/19867402/how-can-i-use-enumwindows-to-find-windows-with-a-specific-caption-title
정성태
2020-06-03 10시42분
[하태] 아.,/., 제가 혼란을 드린것 같네여.,., 반대의 케이스를 찾고 있습니다.,
c++ 함수를 c# dll로 전달하는 것을 찾고 있습니다.
c++은 dll형식이 아니고 lib형식입니다!
[손님]
2020-06-03 10시51분
반대의 케이스도 유사하게 응용해서 처리하시면 됩니다. C++의 형식은 DLL이든지 LIB든지, 어차피 함수 포인터를 전달하고 C#에서는 delegate로 다룰 것이기 때문에 상관없습니다.
정성태
2020-06-03 11시00분
[하태] 넵 감사합니다! 다시 한번 해보겠습니다!
[손님]

1  2  3  4  5  6  [7]  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5565password510/25/20211942wpf에서 Cefsharp를 AnyCPU로 작업 했는데 실행이 되지 않습니다. [4]
5564초보10/21/20211374오버라이드 관련 질문드립니다 [2]
5562서지훈10/20/20211339win32 api 문의 드립니다. (EnableMenuItem) [5]
5561Edun10/15/20211530도와주세요!! 팝업 띄우는 더블클릭 이벤트!! 부탁드립니다 ㅠㅠ [4]파일 다운로드1
5560Edun10/13/20211807C#초보자 개념이해 도와주세요!! [4]
5559최가운10/5/20211593C# debugging 중에 Thread Pool Worker들이 사라지는데요 [3]
5558옥코드9/29/20211544안녕하세요! EntityFramework Linq 질문 드리겠습니다. [4]
5557임기성9/16/20212025웹 사이트(IIS)가 오류로 인하여 빈번하게 죽는 이슈 문의 [1]
5556hjlee9/13/20211345visual studio 설치 없이 csi.exe (C# interactive) tool을 설치할 수 있을까요? [2]
5555이성열9/2/20211373C# 런타임(Reflection)에서 소스코드에 입력한 함수설명(Summary)을 가져올 수 있을까요? [3]
5554농상9/2/20211683enum 원소값이 중복인 경우 출력 [4]
5553shdtkd378/31/20211656제너릭을 new로 할당했는데 null인 경우가 존재하나요? [1]
5552hjshimdm8/30/20211449C# 폼 - 마우스가 다른 버튼 위를 움직일 때도 폼의 페인트핸들러가 호출되는 것이 맞나요? [2]
5551하나다라마8/27/20211542뽀모도로 타이머 개선사항 [1]
5550하영8/27/20212188SqlDataReader 관련 질문입니다. [8]
5549책 감사합니다8/23/20212490C# 9.0 책 오타 [1]
5548Dev8/23/20212131String의 IndexOfAny 함수 질문 [3]
5547민성8/20/20211955WPF Radio 버튼을 GroupName으로 읽어와서 비교하기 [1]
5546DeveloperST8/19/20212119C++ C# API 연동 관련 [1]
5545영귤8/18/20211544C# 14.3장 예제에서 반환 값의 값 복사 부하가 어디서 발생하는 것인가요? [4]
5544이상호8/18/20211526C# Graphics 객체 저장 가능 여부 [2]
5543정형지8/18/20211613c# outofmemoryexception [3]
5542영귤8/11/20212270C#9.0 886쪽 오류 발생 안 해요 [2]
5541서지훈8/11/20212901C# 응용프로그램(Winform)의 비정상 종료(Exit Code) [2]
5540산들마을호랑이8/11/20211804C# 많은 Control(Label 300개) Update 관련 문의 [2]파일 다운로드1
5539초초초촙8/9/20211217c# textbox 입력값이 다름 [1]파일 다운로드1
1  2  3  4  5  6  [7]  8  9  10  11  12  13  14  15  ...