2016-06-12 2 views
2

OmniThreadLibrary가 빌더에서 실행되도록 노력하고 있습니다. 모든 C++ 필수 파일로 빌드했습니다.하지만 빌드 할 때 C++ 빌더 응용 프로그램에서 사용할 때 같이 에러 메시지OmniThreadLibrary C++ builder 빌드 이슈

가 [bcc32 오류] DSiWin32.hpp는 (385) 다음 : E2040 선언 생성 된 HPP 파일

const 정적 시스템에서 코드 줄에 잘못

한 점 종료 : : Int8 CSIDL_ADMINTOOLS = System :: Int8 (0x30);

누군가가 그 문제에 관해서, 나는 C++ 빌더 정착 OmniThreadLibrary 버전 3.06

+0

문제점으로 제기했습니다. 자세한 내용은 링크 참조 https://github.com/gabr42/OmniThreadLibrary/issues/72 – Shaun07776

+0

왜 투표가 중단 되었습니까? – Shaun07776

답변

3

는 Win32 API (델파이를 사용하고

이러한 문제를 해결하는 가장 좋은 방법은 C++ 빌더에서이 작업을했다거나 알고있다)은 이미 CSIDL_ADMINTOOLS을 선언하고 있으며 Omni는 전혀 선언하지 않아야합니다. 대신 Delphi의 Shlobj 장치를 사용해야합니다.

는 Win32 API는 #define 문을 사용하여 CSIDL_ADMINTOOLS를 선언

그래서 옴니의 .hpp의 선언이로 C++ 프리 프로세서에 의해 수정지고
#define CSIDL_ADMINTOOLS 0x0030 

: 따라서

static const System::Int8 0x0030 = System::Int8(0x30); 

은 "선언 잘못 종료 "컴파일러 오류. 델파이 코드가 이미 C++에 존재하는 뭔가를 선언 할 때

, 그것은 중복 선언을 피하기 위해 {$EXTERNALSYM} 또는 {$NODECLARE} 중 하나를 선언해야하고 선택적으로 생성 .hpp 파일에 출력 관련 #include 문을 {$HPPEMIT}를 사용합니다. 델파이의 단위는 이미 Win32 선언을 위해이를 수행합니다.

옴니가 아직 그렇게하지 않은 경우 (오류가 아니라고 제안하면) 그에 따라 업데이트해야합니다.

+0

안녕하세요. 고마워요. 지금은 그들을 주석으로 처리하여 작동하도록했습니다. 그들이 몇몇을 한 것처럼 보이고 그러나 나는 모두를 추측하지 않는다. – Shaun07776

+0

@ Shaun07776 옴니 작성자와 함께 버그 보고서를 제출해야합니다. –

+0

그래, 하겠어. 나는 그들이 C++ 빌더를 지원하는 모든 보고서를 생각하지 않는다. 그러나 괜찮은 것으로 보인다. 나는 앞으로 몇 가지 다른 문제들을 제기 할 것이다. 당신의 도움을 주셔서 감사합니다 – Shaun07776