나는 C++ 클래스 (SLABHIDDevice.dll)에 대한 dll을 가지고 있습니다. 이 DLL의 기능을 C# .net 응용 프로그램에서 사용하려고합니다. DLL은 DLLImport를 사용하여 개체 가져 오기
이[DllImport("SLABHIDDevice.dll")]
public static extern byte GetHidString
(Int32 deviceIndex, Int32 vid, Int32 pid,
Byte hidStringType, String deviceString,
Int32 deviceStringLength);
문서 (내가 잘못 여기에 몇 가지 용어를 얻는 경우에 나는 appolagize 내가 사용 DLL이 새로운 오전) ... 나는 이와 같은 진술을 쉽게 사용할 수있는 여러 가지 방법을 포함 SLABHIDDevice.dll에는 클래스 개체 인 CHIDDevice도 포함되어 있다고합니다. 이고 해당 객체에는 Open()과 같은 멤버 함수의 전체 목록이 있습니다.
위와 같은 구문을 사용하여 Open()을 가져 오려고하면 Open() 함수의 진입 점을 찾을 수 없다는 오류가 발생합니다. Open()이 CHIDDevice의 멤버이기 때문에입니까?
이것은 DUMPBIN의 dll 구성입니다 ... 아래 세 함수 만 작동 할 수 있습니까? 누구든지 다른 구문을 사용하는 데 필요한 구문을 알고 있습니까? 함수 이름 앞에있는 물음표는 무엇을 의미합니까?
Dump of file SLABHIDDEVICE.dll
File Type: DLL
Section contains the following exports for SLABHIDDevice.dll
00000000 characteristics
47E13E0F time date stamp Wed Mar 19 12:23:43 2008
0.00 version
1 ordinal base
26 number of functions
26 number of names
ordinal hint RVA name
4 0 00001000 [email protected]@[email protected]@@Z
5 1 00001330 [email protected]@[email protected]
6 2 00001430 [email protected]@[email protected]
7 3 00001080 [email protected]@[email protected]@@Z
8 4 00020044 [email protected]@[email protected]
9 5 00001460 [email protected]@@QAEEXZ
10 6 00001C70 [email protected]@@QAEHXZ
11 7 00001CA0 [email protected]@@QAEGXZ
12 8 00001850 [email protected]@@[email protected]
13 9 00001C80 [email protected]@@QAEGXZ
14 A 00001BE0 [email protected]@@[email protected]
15 B 00001A20 [email protected]@@[email protected]
16 C 00001CB0 [email protected]@@QAEKXZ
17 D 00001C90 [email protected]@@QAEGXZ
18 E 00001730 [email protected]@@[email protected]
19 F 00001CC0 [email protected]@@[email protected]
20 10 00001700 [email protected]@@QAEHXZ
21 11 000014A0 [email protected]@@[email protected]
22 12 00001360 [email protected]@@AAEXXZ
23 13 00001810 [email protected]@@[email protected]
24 14 00001B80 [email protected]@@[email protected]
25 15 000018C0 [email protected]@@[email protected]
26 16 00001CE0 [email protected]@@[email protected]
3 17 00001320 GetHidGuid
2 18 000GetHidString
1 19 00001190 GetNumHidDevices
Summary
6000 .data
7000 .rdata
5000 .reloc
4000 .rsrc
1C000 .text
'this'는 (적어도 VC++과 호환되는)'CallingConvention.ThisCall'이 있기 때문에 문제가되지 않습니다. 필요한 메모리 할당면은 DLL이 헤더를 사용할 수 있는지를 결정할 수 있습니다. 그렇지 않으면 아무도 C++에서 헤더를 사용할 수 없습니다. –
흠, C# 컴파일러가 어떻게 그 헤더를 파싱하는지 확신 할 수 없습니다. –