을 사용하여 제대로 함수를 노출하려면 C#에서 관리되지 않는 DLL을 사용하는 컨트롤러와 통신해야합니다. 이 문서는 DLL에별로 도움이되지 않으며 DLL과 이야기 할 때 경험이 없습니다. 이 회사는 VB에서 DLL을 래핑하는 클래스로 샘플 VB 프로젝트를 제공합니다. 클래스는 ctccom32v2라고합니다.VB 클래스 라이브러리에서 C#
구조체 및 기타 변수를 포함하여 관리되지 않는 DLL을 호출하는 더러운 작업이 이미 완료되었으므로 해당 클래스를 사용하여 VB 클래스 라이브러리를 만들 수 있다고 생각했습니다. 나는 그것이 많은 시간과 노력을 덜어 줄 것이라고 생각한다. 그래서 VB 클래스 라이브러리 프로젝트에 클래스 소스 파일을 추가하고 DLL을 빌드 할 때 dll을 생성합니다. 그런 다음 해당 DLL을 C# 프로젝트 참조에 추가하고 참조 브라우저에서 함수를 볼 수 있습니다. 내가 만든 라이브러리의 이름은 CTC_Lib입니다.
는 (난 그냥 VB에서 내 프로그램을 작성하고 자신의 클래스를 사용하지 않는 이유를 궁금해하는 경우, 내가 선호 나는 C#에서 더 편안하고 있어요)
내가으로 실행하고 문제는 이것이다 : 하는 경우 내가 ctc.somefunction를 입력하려고 다음
CTC_Lib.Ctccom32v2 ctc = new CTC_Lib.Ctccom32v2();
등을 사용하여 라이브러리의 인스턴스를 생성, 인텔리 등 같음, GetHashCode, 같은 몇 가지 기본 방법을 내가 관리되지 않는를 드러내는 Ctccom32v2의 함수를 볼 수 없습니다를 보여줍니다 DLL. 내가 지금처럼 수동으로 라이브러리 및 클래스 이름을 입력하면
는 :
CTC_Lib.Ctccom32v2.
IntelliSense를 목록 Ctccom32v2의 모든 기능과 함께 나타납니다.
Public Function add() as Void
Return 1+2;
End Function
내가 다음 인스턴스를 만들기 위해 같은 방법을 사용하십시오 :
나는 VB 클래스 라이브러리에 다른 클래스를 추가하면 그것으로 간단한 기능과 스틱 ("somelib"를 호출 수 있습니다)
CTC_Lib.somelib ctc = new CTC_Lib.somelib();
"add"기능은 이제 ctc를 입력하기 만하면 intellisense 창에 나타납니다.
함수가 VB 클래스에서 선언되는 방식 때문일 수 있습니까?
Declare Auto Function CtOpenConnection Lib "Ctccom32v2.dll" _
(ByVal ConnectID As Integer, ByVal CommPort As Integer, ByVal Address As Integer) As Integer
난 당신이 시도 할 때 그 기능을 노출하지 않고 무엇을 의미하는지 자동 기능 모른다 : 여기 VB 클래스의 많은 기능 중 하나입니다, 그들은 모두 같은이 "자동 기능을 선언"을 사용하여 선언 이 클래스가 상주하는 클래스의 인스턴스를 만들 수 있습니다.
VB 클래스 라이브러리 내의 해당 함수를 호출하는 적절한 방법이 아니면 초보자입니다. 또한 내 용어의 일부가 틀린 경우 용서해주십시오. 나는 전문 용어 프로그래밍에 익숙하지 않다 (아직).
감사합니다. 나는 인텔리 센스가 기능을 "보지"못했다면 뭔가 잘못되었을 수 있다고 생각했습니다. –