2009-04-15 3 views
1

C# .NET 2.0에서 COM 호출 가능 DLL을 만들고 .NET regasm 도구를 사용하여 어셈블리에서 TLB 을 생성했습니다.볼랜드 C++ 빌더 4에서 .NET DLL을 사용할 때 문제가 발생했습니다.

볼랜드 C++ 빌더 4.0에서 Project-> Import Type Library->로 가서 내 DLL의 유형 라이브러리를 찾아서 가져 오려면 "Ok"를 클릭하십시오.

BCB는 HardwareCheck_TLB.cpp & HardwareCheck_TLB.h 파일을 만듭니다.

프로젝트의 cpp 파일에 나는 DLL을 넣고 싶습니다 : #include "HardwareCheck_TLB.h" 맨 위.

코드에서 해당 유형의 객체를 코드로 선언하면 다음 코드가 나타납니다. IHardwareCheck hc = new IHardwareCheck();

다음 컴파일러 오류가 발생합니다. [C++ 오류] Unit1.cpp (22) : E2352 클래스 'IHardwareCheck'의 인스턴스를 만들 수 없습니다. Unit1.cpp (22) : E2353 클래스 'IHardwareCheck'는 '__stdcall IHardwareCheck :: IsExpress (wchar_t * *, TOLEBOOL *) = 0'때문에 추상 입니다.

아무도이 오류를 없애는 방법에 대해 아이디어가 있습니까?

감사합니다.

답변

0

그것은 당신이

CoHardwareCheck::Create(&hc) 

당신은 볼랜드는 자사의 제품을 배포하는 tlibimp.exe보고 할 수 있습니다 할 수있는 몇 TCoClassCreatorT <> 유형을 생성해야합니다. 나는 그 프로그램을 가지고 전에 이것을 거쳤지 만, Co 클래스를 생성 할 수 없었고 아마도 더 나은 행운을 누릴 수있을 것입니다.

2

신규를 사용하여 COM 클러치를 생성 할 수 없습니다. CoCreateInstance 시스템 호출 (MSDN 참조) 또는 Borland에서 제공하는 일부 래퍼 (예 : zer0_ring에서 언급 한 것과 같은)를 사용해야합니다.

관련 문제