2011-07-26 5 views
0

tlibimp.exe (버전 11.0)를 사용하여 타사 .NET 유형 라이브러리 (COM 서버 DLL)를 가져 오려고합니다. 이것은 기본적으로 잘 작동하지만 다른 컴퓨터에서 실행하면 결과가 달라집니다. 하나는 Windows XP를 실행하고 다른 하나는 Windows 7입니다. 더 나쁜 것은 Win7 시스템에서 생성 된 코드가 컴파일되지 않습니다.tlibimp.exe 출력이 다른 OS에서 다릅니다

두 시스템이 있습니다

  • 볼랜드 C++ (RAD 스튜디오) 지금까지의 내가 2007 볼랜드을 말할 수있는 11.0
  • 같은 .NET 프레임 워크 버전이 설치된 2007
  • tlibimp.exe 버전 (사용 .NET v2를)
  • bcc32.exe 버전 5.93
컴파일러와 함께 OCX.h에 실패

:

Parameter mismatch in write access specifier of property Font 

(확인 컴파일) XP의 시스템에서 코드의 해당 줄은 다음과 같습니다

__property Graphics::TFont * Font={ read=GetTFontProp, write=_SetTFontProp, stored=false, index=-512 }; 

(실패)가 Win7에 시스템에서 같은 라인은 다음과 같습니다

__property IFontDisp* Font={ read=get_Font, write=set_Font, stored=false }; 

지금 나는이 차이점이 어디에서 유래하는지 정말로 모른다. 어떤 아이디어?

환호 헨드릭

+0

.net COM 서버가 어떻게 VCL'Graphics :: TFont'을 내보낼 수 있습니까? –

+0

실마리가 없지만 작동하는 것 같습니다. 어쩌면 볼랜드의 컴포넌트 래퍼 마술일까요? – Hendrik

+0

나는 한 줄뿐 아니라 문제의 두 버전 사이에 큰 차이가 있다는 것을 덧붙여 야합니다. 시작을 위해 WinXP 버전은 TOleControl에서 상속 받았으며 Oleserver에서 Win7 : TOleServer – Hendrik

답변

0

이 또는 도움이되지 않을 수도 있습니다하지만 날카로운 어셈블리 C에서, 델파이에 두 형식 라이브러리를 가져 오려고 비슷한 문제가 있었다.

TOLeServer에서 상속 된 하나의 형식 라이브러리 (A)와 TOleControl의 다른 형식 (B)은 형식 라이브러리를 생성 한 두 어셈블리가 사실상 동일하므로 왜 볼 수 없습니다.

B는 regasm에 등록되었고 A는 그렇지 않았 음이 밝혀졌습니다. A를 등록하고 형식 라이브러리를 다시 생성하면 문제가 해결됩니다.

관련 문제