Форум КриптоПро
»
Средства криптографической защиты информации
»
Apple
»
SystemTimeToFileTime и FileTimeToDateTime в собственном фреймворке
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.05.2012(UTC) Сообщений: 63   Откуда: Подмосковье Сказал «Спасибо»: 5 раз
|
добрый день прошу помощи... есть собственный фреймворк, использующий CPROCSP.framework. внутри этого самого собственного фреймворка есть c++ код, вызывающий FileTimeToSystemTime и SystemTimeToFileTime. есть приложение, использующее этот собственный фреймворк. при сборке этого приложения имею ошибки линковки: "неопределенный символ _FileTimeToDateTime (может быть вы имели в виду _CSP_FileTimeToDateTime?)" и аналогично для SystemTimeToFileTime. вот тут вот - http://www.cryptopro.ru/...sts&t=4832#post28027 - я прочитал, что:
>>> #define GetLastError CSP_GetLastError #define SetLastError CSP_SetLastError #define FileTimeToSystemTime CSP_FileTimeToSystemTime #define SystemTimeToFileTime CSP_SystemTimeToFileTime пожалуй, включу это в свежие версии CPROCSP.h Причина примерно такая: На ios всё линкуется статически. В некоторых популярных библиотеках есть функции с такими именами, а символы дублироваться не должны. Поэтому у нас после сборки фреймворка заменяются имена символов, чтобы избежать таких конфликтов. Внутри нашей сборки и соответственно внутри хедеров фукнции имеют обычные имена, подмена имени происходит уже в готовой библиотеке (в противном случае, будет кошмар из ifdef IOS).
поиском по вашему фреймворку я смог найти только подобное определение GetLastError может есть какая-то хитрость? или ваш фреймворк у меня устарел? как, кстати, посмотреть его версию? спасибо
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
впишите #define GetLastError CSP_GetLastError #define SetLastError CSP_SetLastError #define FileTimeToSystemTime CSP_FileTimeToSystemTime #define SystemTimeToFileTime CSP_SystemTimeToFileTime в хедер CPROCSP.h я по каким-то причинам решила что поставлять хедер в таком виде плохо, уже не помню почему(попытаюсь найти в jira), но если хотите SystemTimeTofileTime и не писать руками префиксы CSP_, то или в CPROCSP.h или в тот файл с исходниками, откуда эти функции будут вызываться, надо дописать define. Версия написана в нашей панели -- в верхней строчке CryptoPro CSP 3.6 <номер сборки> Отредактировано пользователем 10 сентября 2013 г. 11:20:23(UTC)
| Причина: Не указана |
Татьяна ООО Крипто-Про |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.05.2012(UTC) Сообщений: 63   Откуда: Подмосковье Сказал «Спасибо»: 5 раз
|
спасибо, Татьяна, за ответ
я пробовал явно указывать CSP_FileTimeToSystemTime
итог - ошибка компиляции "undeclared identifier"
что не так?
в этом cpp-файле присутствует вот это: #include <CPROCSP/CPROCSP.h>
а в самом проекте определен макрос IOS (есть общий "кросс-платформенный" код) может из-за этого макроса что-то не так?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
поместите
#define GetLastError CSP_GetLastError #define SetLastError CSP_SetLastError #define FileTimeToSystemTime CSP_FileTimeToSystemTime #define SystemTimeToFileTime CSP_SystemTimeToFileTime
перед
#include <CPROCSP/CPROCSP.h> |
Татьяна ООО Крипто-Про |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.05.2012(UTC) Сообщений: 63   Откуда: Подмосковье Сказал «Спасибо»: 5 раз
|
всё, понятно define FileTimeToSystemTime должен быть перед декларацией FileTimeToSystemTime хорошо
еще маленький вопрос:
у вас макрос IOS определяется вот так: #define IOS 1
вопрос - у вас нигде в коде нет сравнения IOS именно с 1? только if defined? судя по директории headers, всё в порядке, но всё же...
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
про
#define IOS 1
это нормально, например autotools также определяют переменные, которые будут проверяться при помощи ifdef |
Татьяна ООО Крипто-Про |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.05.2012(UTC) Сообщений: 63   Откуда: Подмосковье Сказал «Спасибо»: 5 раз
|
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
Apple
»
SystemTimeToFileTime и FileTimeToDateTime в собственном фреймворке
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close