Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2010, 13:30   #1
shuaal
Новичок
Джуниор
 
Регистрация: 25.10.2010
Сообщений: 1
По умолчанию От Win32 к Win64

Обращаюсь к сообществу программистов на С++ так как самостоятельно данную проблему решить не получилось.

1. Существует библиотека UDF для Firebird - rFunc.dll. также доступны ее исходники на С++. Автором данный проект в настоящее время не поддерживается.

2 В связи с установкой нового современного сервера на предприятии возникла необходимость в 64 битной версии данной библиотеке. Найденные в инете готовые (кемто перекомпилированные под 64 бита) решения на нашей платформее работать отказывались. Далее был установлен Visual Studio 2009 и с его помощью самостоятельно перекомпилирована данная библиотека. Большинство функций работаен корректно. Но не все.

3 Вот исходный код одной из них
Код:
char* EXPORT fn_floattostr(ARG(double*, d), ARG(char*, fmt))
ARGLIST(double *d)
ARGLIST(char *fmt)
{
	char *buffer = (char *) MALLOC (shortlen);
	char	*s, slong[20];
	long	i;

	buffer[0] = '\0';
// Разбираем строку формата, пытаясь вычислить предполагаемы тип аргумента.
	// Каждый спецификатор преобразования начинается символом %
	if (s = strstr(fmt, "%"))
	{
		i = 1;
		while (strchr("+- #", s[i])) i++;
		while (strchr("0123456789", s[i])) i++;
		while (strchr(".", s[i])) i++;
		while (strchr("0123456789", s[i])) i++;
		if (strchr("diouxX", s[i]))
		{
			sprintf(slong, "%.0f", *d);
			i = atoi(slong);
			sprintf(buffer, fmt, i);
		}
		else
			sprintf(buffer, fmt, *d);
	}
	else
		sprintf(buffer, fmt, *d);
	return buffer;
}
вот рекомендации по переходу

замена "старых" типов новыми в тех случаях, когда это необходимо;
замена всех 32-разрядных указателей на 64-разрядные;
замена всех API-функций Win32 их 64-разрядными эквивалентами.

на нашем предприятии просто нет людей владеющих С++
поэтому возможено и не сложная проблема поставила нас в тупик.

возвращаемая ошибка : Bad written UDF detected: pointer returned in FREE_IT function was not allocated by ib_util_malloc.



Заранее благодарны за любую помощь в данном вопросе

Последний раз редактировалось shuaal; 25.10.2010 в 14:41.
shuaal вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Lazarus компилит приложения для Win64? Marsel737 Lazarus, Free Pascal, CodeTyphon 3 18.10.2010 02:30
win32 API.Visual Studio 2008.Создание проекта Win32 Aleksandr_Yanov Visual C++ 2 12.09.2010 13:09
Win32 API. VS2008. Как создать приложение win32 в vs2008? Aleksandr_Yanov Visual C++ 4 12.09.2010 00:59
Windows 7 win64 и SQL Dux SQL, базы данных 0 17.03.2010 23:52
HLLW.Shadow.based / Net-Worm.Win32.Kido / Win32.Conficker / W32.Downadup Pirotexnik Безопасность, Шифрование 13 27.03.2009 14:02