문제

C ++를 사용하여 프로세스 주입을해야하지만 낮은 레벨 이외의 모든 것에 C#을 사용하는 것이 좋습니다. 나는 "기능 포장"과 "마샬링"에 대해 들었고 약간의 Google 검색을 수행했으며 여기 저기 정보를 찾았지만 여전히 부족합니다.

유용성 순서로 읽은 것들;
http://msdn.microsoft.com/en-us/library/ms235281(vs.80).aspx
http://www.drdobbbs.com/cpp/184401742
http://geeklit.blogspot.com/2006/08/calling-c-lib-from-c.html

C#에 모든 하위 레벨 (기본 C ++)을 어떻게 래핑 할 수 있으므로 C#에 더 편한 언어로 해당 함수를 쉽게 명령 할 수 있습니까?

주제에 대한 정보는 대단히 감사합니다.

도움이 되었습니까?

해결책

P/Invoke가 실제로 가장 간단한 접근법이라고 생각합니다.

  • DLL을 만듭니다 관리되지 않습니다 C ++, 주입을 수행하는 데 필요한 모든 기능을 포함합니다.
  • C# 코드에서 일부를 선언하십시오 static extern 방법을 사용하고 사용하십시오 DllImport C ++ DLL을 가리키는 속성. 자세한 내용은 제공 한 링크를 참조하십시오 아룰 안에 그의 대답.

P/Invoke는 "Windows API 기능"에만 국한되지 않습니다. 기본 DLL에 노출 된 함수를 호출 할 수 있습니다.

P/Invoke의 잠재적 인 단점은 C ++ 함수에 대한 서명을 제공해야하며, 아마도 어둡지 않은 마샬링을 지정할 수 있다는 것입니다. 이 경우 "일반"DLL 대신 COM 서버 구성 및 사용을 고려할 수 있습니다. com interop C#에서 코드를 호출하려면.

다른 팁

p/invoke를 사용하려고합니다 MSDN 매거진.

Pinvoking이 원하는 것이 아닌 경우 관리되는 C ++ 응용 프로그램을 작성하십시오. 기본 C ++를 사용하여 공정 주입 작업을 수행하십시오. 관리 된 C ++를 사용 하여이 기본 동작에 대한 .NET 친화적 인 인터페이스를 만듭니다. 그런 다음 C#에서 호출 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top