GR32_Transforms.hpp 를 원래대로 고치신후, 다음 예제를 한번 실행해 보세요.
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=53331
C++Builder6 에서는 정상적으로 실행되는 예제입니다.
Mult, Adjoint 함수는 내부적으로 사용하는 것이므로 사용자가 직접 사용할 일은 없습니다.
한빈짱 님이 쓰신 글 :
: Graphic32를 설치해서 단순히 이미지 그리는 것만 쓰다가
:
: 다른 무슨 기능이 있을까해서 컴포넌트에 포함된 예제파일을 하나하나 컴파일 해봤는데.
:
: cpp로 된 예제는 별루없고 거의 pas예제더군요. 다행히 C빌더2007이라, 컴파일은 되는..
:
: 어째든 ImgView_Layers_Ex예제가 레이어사용을 잘 설명해놓은 듯 해서
:
: 해당 pas소스를 cpp로 바꿔 볼려고 했더니.. 에러가;;
:
:
:
: Graphic32중에 GR32_Transforms.hpp 를 인클루드 하면 에러가 나는 군요.
:
: 에러 내용을 보니 GR32_Transforms.hpp 파일에
:
: extern PACKAGE void __fastcall Adjoint( * M); 와 같이 함수가 선언이 되어 있더군요
:
: (* M) 인자를 이런식으로 넘겨줘서 에러가 나는 듯해서
:
: GR32_Transforms.pas 파일에서 Adjoint함수를 찾아보니
:
: TFloatMatrix = array[0..2, 0..2] of TFloat; ->hpp내용 : typedef float TFloatMatrix[3][3];
: procedure Adjoint(var M: TFloatMatrix); 로 되어 있어
:
: extern PACKAGE void __fastcall Adjoint(TFloatMatrix M); 로 수정했더니 이 에러는 넘어가 졌습니다.
:
: hpp파일은 자동 생성되는 건데 pas-cpp호환 버그인가요;;
:
:
: 하지만 문제는 지금부터!
:
: 에러내용은 [BCC32 Error] GR32_Transforms.hpp(530): E2091 Functions cannot return arrays or functions
:
: hpp의 내용 : extern PACKAGE TFloatMatrix __fastcall Mult( const * M1, const * M2);
:
: 에러 내용은 함수 리턴 값으로 배열이 오면 안된다는 정도 인거 같은데 수정을 위해 pas파일을 보았습니다.
:
: function Mult(const M1, M2: TFloatMatrix): TFloatMatrix;
: var
: i, j: Integer;
: begin
: for i := 0 to 2 do
: for j := 0 to 2 do
: Result[i, j] :=
: M1[0, j] * M2[i, 0] +
: M1[1, j] * M2[i, 1] +
: M1[2, j] * M2[i, 2];
: end;
:
: TFloatMatrix Result를 반환하는 함수인듯한데
:
: 델파이에서는 배열을 반환하는 것이 가능한가 봅니다.
:
: cpp에서는 리턴값이 배열이 안되나본데..
:
: 그러면 GR32_Transforms.hpp는 cpp에서 사용할 수 없는 건가요???
:
: 제가 너무 걷돌았나요??
: 질문은 GR32_Transforms.hpp를 인클루드 해서 쓰는 법!! 입니다;;