2009-04-02 4 views
4

C++로 작성되었으며 Visual Component Library를 사용하는 Windows DLL의 소스 코드가 있습니다. 이제는 저의 임무는 리눅스로 이식하는 것이지만, VCL 자체 또는 어떤 종류의 문서 (그리고 볼랜드 C++로 일한 적이 없으며, Windows에서 MFC를 사용했습니다)에 대한 소스 코드가 없습니다.Borland C++ 빌더 용 코드를 Linux로 어떻게 포트합니까?

내 DLL에 GUI가 없으므로이 내용이 너무 복잡하지 않아야합니다. 내가 볼 수있는 한 대부분 VCL을 사용하여 멀티 스레딩을 수행합니다. 나는 TThread로부터 상속받은 클래스를 만났고, 그것이 내가 붙어있는 곳이다. 인터넷에서 일부 검색을했지만 VCL에 대한 문서는 아직 없습니다. 아마존에서 도착할 때까지 기다릴 시간이 없기 때문에 볼랜드 C++ 빌더에서 책을 사는 것을 피하고 싶습니다. 나는 윈도우 용 패키지를 사는 것을 고려할 수 없다. 왜냐하면 나는 리눅스 박스 만 가지고 있기 때문이다.

제안 사항?

+0

이제 약간의 시간이 지났으니 Delphi XE3 및 C++ Builder XE3은 Linux를 대상으로 할 수는 있지만 (Linux에는 IDE를 설치할 수 없음) 논평 할 가치가 있습니다. 빌드하고 개발하는 데 Windows 상자가 필요하지만 Linux 실행 파일의 생성은 향후 Delphi 또는 C++ Builder 버전 (아마도 2012 또는 2013)에서 가능할 것입니다. 이 질문은 TTHread를 다시 구현하기 만하면됩니다. 하지만 TThread를 리팩토링하고 Boost 쓰레드 라이브러리로 바꾸는 것이 좋습니다. –

답변

3

VCL은 CodeGear's web site에 설명되어 있습니다. TThread는 특히 here으로 기술됩니다.

VCL의 스레딩 관련 구성 요소에 대한 설명서가 드물게 발견되었습니다. This site은 스레딩에 대한 Delphi/VCL 접근 방식에 대해 훨씬 더 잘 설명되어 있습니다.

6

Boost 라이브러리와 wxWidgets은 VCL 클래스에 아날로그를 제공합니다.

+0

이것은 올바른 접근 방법입니다. TThread를 리팩토링하고 Boost 스레딩 클래스로 대체하십시오. –

+0

나는 위의 의견을 초. Embarcadero가 현명하다면, Boost 라이브러리를 지원하는 C++ IDE의 최신 버전을 구축했을 것입니다. –

2

free compiler을 다운로드하여 실험 해 볼 수 있습니다. 최소한 WINE에서 실행할 수 있어야합니다. 어쩌면 FreeDOS에서도.

Delphi/Kylix의 TThread 클래스와 관련이 있어야합니다. 그것은 그것을 탐구하는 또 다른 대안입니다. 가장 중요한 방법은 run()과 sync() 였지만 사용 해본 이후로는 오래되었다고 생각합니다.

그러나 코드를 Linux로 올바르게 이식하려는 경우 일부 부스트 라이브러리 나 다른 것을 사용하여 직접 TThread 클래스를 다시 구현하는 데 도움이 될 수 있습니다.

2

몇 년 전에 볼랜드는 Kylix으로 판매되는 Linux 용 IDE 버전을 출시했습니다. 여전히 지원되는지는 확실하지 않지만 최소한의 저항이 될 수 있습니다.

5

C++ Builder에서 사용하는 VCL은 전적으로 Delphi/ObjectPascal로 작성되었습니다. C++ 빌더 애플리케이션은 모두 델파이 기반 라이브러리를 사용하는 C++를 필요로합니다.

FreePascal/Lazarus 오픈 소스 프로젝트는 대부분의 VCL (거의 모든 비 시각적 인 것들과 많은 시각적 인 것들)을 리버스 엔지니어링했으며 Linux에서 원래 실행됩니다. 비 시각 VCL 호환 물건은 "자유 컴포넌트 라이브러리"("FCL") http://www.freepascal.org/ http://www.freepascal.org/fcl/fcl.var

찾을 수있을만큼 쉽게한다 FCL의 TThread 구현의 소스로 알려져있다.

FreePascal에서는 언어가 ObjectPascal로 변경되지만 VCL 로의 호출과 VCL 구성 요소의 사용은 거의 동일합니다.

또 다른 옵션은 Linux에서 C++로 포트 할 수 있으며 어떻게해서든지 FreePascal의 VCL을 C++에서 사용할 수 있습니다. 나는 그 실용성/실현 가능성을 확신하지 못합니다. FreePascal의 포럼에있는 누군가가 그 대답에 도움이 될 것입니다.

다른 사람이 언급 한 다른 옵션은 다른 스레딩 라이브러리를 사용하여 다시 작성하는 것입니다.

1

스레딩과 같은 프레임 워크를 제공하는 여러 라이브러리가 있습니다. Boost (www.boost.org) 또는 ACE (http://www.cs.wustl.edu/~schmidt/ACE.html)

이러한 스레딩 인프라 중 하나를 사용하려면 코드를 이식하는 것이 매우 쉬워야합니다.

관련 문제