Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.09.15;
Скачать: CL | DM;

Вниз

Проблема с функцией Delphi -> C++   Найти похожие ветки 

 
Sammi   (2013-03-27 17:34) [0]

Есть функция:
Function  TextOut(Font:integer; x,y:integer; r,g,b,a:single; Text:PChar):TVector2i; cdecl;
begin
 Result:=TextOut(Font,x,y,Text,Vector4f(r,g,b,a));
end;

TVector2i = record
 x,y:integer;
end;


Пытаюсь использовать ее на С++:
typedef vec2i (__cdecl *PTEXTOUTPROC) (int Font, int x, int y, float r, float g, float b, float a, const char* Text);

struct vec2i{
int x;
int y;
};


При попытке записи в Result ловлю исключение.

Если сделать так:
struct vec2i{
int x;
int y,t;
};
то все ок.
Не пойму, где косячу.


 
icWasya ©   (2013-03-27 17:41) [1]

Ну для начала посмотреть, какого на самом деле размера структуры - на C и в Delphi.


 
Sammi   (2013-03-27 17:42) [2]

Обе 8 байт. Первым делом проверил.


 
Григорьев Антон ©   (2013-03-28 12:29) [3]

Надо смотреть спецификацию, как функция возвращает параметры типа структур. В Delphi такая функция трактуется как процедура с дополнительным параметром-переменной, а при вызове компилятор подставляет туда в качестве параметра либо подходящую переменную, либо создаёт неявную переменную специально для такого вызова. Не знаю, как это реализовано в C++, но почему-то мне кажется, что как-то по-другому должно быть. Надо копать в этом направлении.


 
SergeyIT ©   (2013-03-29 13:58) [4]

А что это за функция вызывается?
Result:=TextOut(Font,x,y,Text,Vector4f(r,g,b,a));


 
Sammi   (2013-04-08 14:01) [5]

Собственно функция, которая выводит текст.
Если вас одинаковое название смущает, то не обращайте внимание. Оно в реале разное. У внешних функций префиксы. Убрал их чтобы не засорять код.


 
DevilDevil ©   (2013-04-08 20:51) [6]

> Sammi   (27.03.13 17:34) 

есть возможность посмотреть дизасм вызова со стороны С++ ?



Страницы: 1 вся ветка

Текущий архив: 2013.09.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.006 c
1-1313139731
vile
2011-08-12 13:02
2013.09.15
Русская кодировка в английской локали


2-1357291115
Pcrepair
2013-01-04 13:18
2013.09.15
Проблемы с передачей параметров в поток через TStringList


1-1314002018
Developer
2011-08-22 12:33
2013.09.15
Работа с PNG изображением в Delphi 2010


15-1365197648
Чайник
2013-04-06 01:34
2013.09.15
Нич-чо не понимаю!


15-1365336685
Разведка
2013-04-07 16:11
2013.09.15
как создать сгенерировать UUID