2010-06-11 4 views
1

나는 C++ DLL과 1 개의 프로그램 (코드가 아님)을 가지고 있는데,이 프로그램은 DLL에서 1 함수를 호출하고, 그 함수의 이름만을 알고, 이제는 모두 내 응용 프로그램 (C#)에서 그 함수를 호출하려고합니다. . 가능한가?C++ DLL의 기능 정보 추출

감사

+0

일반 이름 또는 변경된 이름입니까? –

답변

2

난 당신이 똑바로 PInvoke를하는 방법을 알아내는뿐만 아니라 당신이 건너 뛸 수 있기 때문에 훨씬 쉬울 것 헤더 파일을 가지고있는 경우에만, 그 자체로 DLL을 가지고 있으리라 믿고있어.

먼저 함수 시그니처를 가져와 인수와 유형을 알아야합니다. C++ DLL이라면 Dependency Walker으로이 문제를 해결할 수 있습니다. C DLL이라면 인수와 유형을 파악하기 위해 실제 어셈블리 코드를 살펴 봐야 할 것입니다.

서명을 알아 내면 PInvoke를 사용하여 C#에서 호출 할 수 있습니다. 자세한 내용과 많은 샘플을 보려면을 참조하십시오.

+0

relpy을 주셔서 감사합니다 ... 종속성 워커는 이것이 c dll이며 더 많은 정보를 표시 할 수없고 함수 이름 만 표시 할 수 있음을 보여줍니다. PInvoke를 설치합니다. 검색 버튼 만 있습니다. 정보를 표시하려면 어떻게하면 내 dll이나 함수를 선택할 수 있습니까? 감사합니다. –

+0

@Armen : 죄송합니다. 오해했습니다. PInvoke를 사용하여 함수에 대한 정보를 찾을 수 없습니다. 먼저 PInvoke를 사용하여 호출하면 어떤 방식 으로든이를 찾아야합니다. PInvoke 웹 사이트는 C#을 C 데이터 유형 등으로 매핑하는 방법에 대한 정보를 제공 할 수 있습니다. 필자가 알아야 할 것은 함수의 이름이 불분명하고 인수와 유형이 무엇인지 알아내는 것이 어려울 수 있다고 생각합니다. –

+0

오 오케이, tahnks. –