PB 호출 C# 작성된 Dll 클래스 라이브러리
선언: c#에 쓴 dll은 pb에 호출될 수 없으며,com 구성 요소로 작성되어야만 호출할 수 있으므로 c#로 dll을 쓸 때 주의해야 한다.
c#의 새 클래스 라이브러리
라이브러리 유형은 일반 라이브러리이고 항목 이름은 AddCom입니다.
1. 설정: 해결 방안 자원 관리자의AddCom을 오른쪽 단추로 클릭하고'속성'을 선택하며'응용 프로그램'->'프로그램 집합 정보'를 선택하고'프로그램 집합의COM을 보이게 하기'를 선택한 다음에'생성'을 클릭하고'COM 상호작용에 등록하기'를 선택한다.
2、AssemblyInfo. 열기cs 파일, [assembly: ComVisible(true)] 설정, 변경하지 않으면 다른 프로그램에서 호출할 수 없음
3. com 구성 요소를 작성하는 데 guid(전 세계 유일한 ID)를 사용하고 com 구성 요소를 작성하는 데 반드시 사용해야 한다.c#는 기본적으로 AssemblyInfo에 배치됩니다.cs, 만약 생성되지 않았다면 GUID 생성기로 생성할 수도 있고 인터넷에서 다음guid를 생성하는 소프트웨어로 만들 수도 있다
4. c#의 소스 코드는 다음과 같다.
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace AddCom
{
[Guid("298D881C-E2A3-4638-B872-73EADE25511C")]
public interface AddComInterface
{
[DispId(1)]
int iadd(int a, int b);
}
[Guid("2C5B7580-4038-4d90-BABD-8B83FCE5A467")]
[ClassInterface(ClassInterfaceType.None)]
public class AddComService : AddComInterface
{
public AddComService()
{
}
public int iadd(int a, int b)
{
int c = 0;
c = a + b;
return c;
}
}
}
이제 C#에 대한 Dll 작업이 완료되었으며 등록이 시작됩니다.
DLL 등록
등록에는 두 가지 방법이 있다
1、C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe E:\Test\MyLib.dll/tlb: E:\Test\MyLib.tlb
반등록: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe/u E:\Test\MyLib.dll/tlb: E:\Test\MyLib.tlb
(이 주소는 Framework를 설치한 물리적 주소로 자신의 컴퓨터에 따라 수정됨) 아래 그림에서 보듯이 성공적으로 등록되었습니다.
2、run("regasm MyLib.dll/tlb: MyLib.tlb",minimized!)
전제는regasm.exe 파일을 현재 항목으로 복사
PB 호출 DLL
pb에서ole조를 이용하여com 구성 요소를 호출합니다
OLEObject OLEObject
long li_status
int li_reg
int li_cel
string a = "aa"
string b = "bb"
// OLEObject
OLEObject = Create OLEObject
//
li_status= OLEObject.ConnectToNewObject("RakbLibrary.Class1")
if li_status<>0 then
// , ,
li_cel = run("regasm /u RakbLibrary.dll /tlb:RakbLibrary.tlb",minimized!)
if li_cel <> 1 then
messagebox(' ',' !')
return
else
messagebox(' ',' !')
li_reg = run("regasm RakbLibrary.dll /tlb:RakbLibrary.tlb",minimized!)
if li_reg<>1 then
messagebox(' ',' !')
return
else
messagebox(' ',' !')
end if
end if
else
//
li_res = OLEObject.getForm(a,b)
end if
//
OLEObject.DisConnectObject()
반환값이 -3이면 Object could not be created에서 exe 실행 파일을 생성하면 됩니다.
주의: listatus 연결 상태가 0이면 DLL 연결이 성공했음을 의미합니다. 그렇지 않으면 DLL이 등록되지 않았을 수도 있습니다. 다시 등록해야 합니다.
li_cel 등록 상태가 1이면 등록 성공
OLEObject.DisConnectObject() DLL ,
모든 필요한 파일 (C#의 dll 파일과 tlb 파일,regasm.exe) 은 프로젝트의 루트 디렉터리에 놓고, 이 몇 개의 파일은 같은 디렉터리에 두어야 한다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.