2009-08-28 1 views
2

읽은 후 Dynamically calling unmanaged dlls in .net.net 3.5 작업 또는 Muncalled 관리되지 않는 대리자로 Func 사용할 수 있습니까?

나는 내 마음에 드는대로 코드를 수정하려고 노력해 왔습니다. 로드 콜을 랩핑하고 필요에 따라 자유롭게 사용할 수 있도록 구현하는 클래스를 만들었습니다. 그러나 익명의 대리자를 사용할 수 있다면 구문을 파악할 수 없습니다.

var loaded=DynamicLibraryLoader.TryLoad("User32.dll"); 
var beeper=loaded.GetProcAddress("MessageBeep"); 
var type=typeof(Action<UInt32>); 
Action<UInt32> beepAction2=(Action<UInt32>) Marshal.GetDelegateForFunctionPointer(beeper,type); 

마지막 줄에 지정된 유형이 제네릭 형식 정의가 아니어야한다는 내용의 인수 예외가 발생합니다. 이 문제를 해결할 방법이 있습니까? 아니면 관리되지 않는 작업을 수행 할 명명 된 대리인을 제공해야합니까? 당신이 관리되지 않는 코드 창에서 기본적으로 무엇을 할 수 있는지에 관심있는의 참고로

-Link

답변

1

(DLL을 동적으로 바로 가기를 만들로드)를 제외하고 알 수 있듯이,이 경우 제네릭이 아닌 대리자를 사용해야합니다 네이티브 함수 포인터를 관리 코드로 변환합니다.

+0

구문이나 주위에 구문이 없습니까? – Maslow

+0

@Maslow, 아니요. 지금은 없습니다. – JaredPar

+0

다른 답변이 없으므로 추측 할 수 있습니다. 답변을 받아 들일 것입니다. 예외가 말하는 내용을 다시 읽습니다. 일부 리소스, 참조 또는 일부 유형을 선호했을 것입니다. 해결 방법 아이디어. – Maslow