|
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를 인클루드 해서 쓰는 법!! 입니다;;
|