Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Бушминский Игорь  
#1 Оставлено : 18 марта 2025 г. 13:10:31(UTC)
Бушминский Игорь

Статус: Новичок

Группы: Участники
Зарегистрирован: 19.12.2022(UTC)
Сообщений: 5

Сказал(а) «Спасибо»: 1 раз
Добрый день.

Столкнулся с ошибкой при сборке библиотеки cadescom для .NET по инструкции: https://github.com/Crypt...des/blob/main/README.md.
Сборку выполняю в WSL на Ubuntu 24.04. Ошибку получаю при сборке ccades (команда make-j4):
Код:

[  3%] Building CXX object CMakeFiles/ccades.dir/errormsg.cpp.o
In file included from /opt/cprocsp/include/pki/atl/atldef.h:25,
                 from /opt/cprocsp/include/pki/atl/atlbase.h:75,
                 from /opt/cprocsp/include/pki/atl/atlstr.h:19,
                 from /home/igor/cryptopro/linux-amd64_deb/dotnetcades/ccades/errormsg.cpp:37:
/opt/cprocsp/include/pki/atl/atlunixdefs.h:41:9: error: ‘uint64_t’ does not name a type
   41 | typedef uint64_t __uint64;
      |         ^~~~~~~~
/opt/cprocsp/include/pki/atl/atlunixdefs.h:1:1: note: ‘uint64_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  +++ |+#include <cstdint>
    1 | #ifndef _ATLUNIXDEFS_H_INCLUDED
/opt/cprocsp/include/pki/atl/atlunixdefs.h:72:9: error: ‘uint32_t’ does not name a type
   72 | typedef uint32_t UINT32;
      |         ^~~~~~~~
/opt/cprocsp/include/pki/atl/atlunixdefs.h:72:9: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
In file included from /opt/cprocsp/include/pki/atl/atlcore.h:35,
                 from /opt/cprocsp/include/pki/atl/atlbase.h:81:
/opt/cprocsp/include/reader/support.h:1308:13: error: ‘uint16_t’ does not name a type
 1308 |     typedef uint16_t WIN_WCHAR_T;
      |             ^~~~~~~~
/opt/cprocsp/include/reader/support.h:62:1: note: ‘uint16_t’ is defined in header ‘<cstdint>’; did you forget to
#include <cstdint>’?
   61 | #include "reader/support_registry.h"
  +++ |+#include <cstdint>
   62 |
/opt/cprocsp/include/reader/support.h:1311:38: error: ‘WIN_WCHAR_T’ does not name a type
 1311 |     size_t support_utf16le_len(const WIN_WCHAR_T * src)
      |                                      ^~~~~~~~~~~
/opt/cprocsp/include/reader/support.h:1320:39: error: ‘WIN_WCHAR_T’ does not name a type
 1320 |     size_t support_utf16le_nlen(const WIN_WCHAR_T * src,
      |                                       ^~~~~~~~~~~
/opt/cprocsp/include/reader/support.h:1346:9: error: ‘WIN_WCHAR_T’ has not been declared
 1346 |         WIN_WCHAR_T * dst, /* buffer to hold utf16 string or NULL to calculate*/
      |         ^~~~~~~~~~~
/opt/cprocsp/include/reader/support.h:1357:16: error: ‘WIN_WCHAR_T’ does not name a type
 1357 |          const WIN_WCHAR_T * src, /* utf16 string */
      |                ^~~~~~~~~~~
In file included from /opt/cprocsp/include/pki/atl/atlconv.h:30,
                 from /opt/cprocsp/include/pki/atl/atltrace.h:17,
                 from /opt/cprocsp/include/pki/atl/atlexcept.h:17,
                 from /opt/cprocsp/include/pki/atl/atlchecked.h:17,
                 from /opt/cprocsp/include/pki/atl/atlcore.h:46:
/opt/cprocsp/include/pki/atl/atlalloc.h: In function ‘HRESULT ATL::AtlMultiply(T*, T, T) [with T = unsigned int; HRESULT = int]’:
/opt/cprocsp/include/pki/atl/atlalloc.h:149:9: error: ‘__uint64’ was not declared in this scope; did you mean ‘__int64’?
  149 |         __uint64 i64Result=static_cast<__uint64>(iLeft) * static_cast<__uint64>(iRight);
      |         ^~~~~~~~
      |         __int64
/opt/cprocsp/include/pki/atl/atlalloc.h:150:12: error: ‘i64Result’ was not declared in this scope; did you mean ‘piResult’?
  150 |         if(i64Result>UINT_MAX)
      |            ^~~~~~~~~
      |            piResult
/opt/cprocsp/include/pki/atl/atlalloc.h:154:54: error: ‘i64Result’ was not declared in this scope; did you mean ‘piResult’?
  154 |         *piResult=static_cast<unsigned int _ATL_W64>(i64Result);
      |                                                      ^~~~~~~~~
      |                                                      piResult
/opt/cprocsp/include/pki/atl/atlalloc.h: In function ‘HRESULT ATL::AtlMultiply(T*, T, T) [with T = long unsigned int; HRESULT = int]’:
/opt/cprocsp/include/pki/atl/atlalloc.h:174:9: error: ‘__uint64’ was not declared in this scope; did you mean ‘__int64’?
  174 |         __uint64 i64Result=static_cast<__uint64>(iLeft) * static_cast<__uint64>(iRight);
      |         ^~~~~~~~
      |         __int64
/opt/cprocsp/include/pki/atl/atlalloc.h:175:12: error: ‘i64Result’ was not declared in this scope; did you mean ‘piResult’?
  175 |         if(i64Result>ULONG_MAX)
      |            ^~~~~~~~~
      |            piResult
/opt/cprocsp/include/pki/atl/atlalloc.h:179:55: error: ‘i64Result’ was not declared in this scope; did you mean ‘piResult’?
  179 |         *piResult=static_cast<unsigned long _ATL_W64>(i64Result);
      |                                                       ^~~~~~~~~
      |                                                       piResult
make[2]: *** [CMakeFiles/ccades.dir/build.make:510: CMakeFiles/ccades.dir/errormsg.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/ccades.dir/all] Error 2
make: *** [Makefile:91: all] Error 2


Подскажите, пожалуйста, в чем ее причина?
Offline Ситдиков Денис  
#2 Оставлено : 19 марта 2025 г. 11:29:03(UTC)
Ситдиков Денис

Статус: Администратор

Группы: Участники
Зарегистрирован: 01.03.2017(UTC)
Сообщений: 114
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 47 раз в 34 постах
Здравствуйте.
Не хватало включения заголовочного файла <cstdint>
Цитата:
...
‘uint64_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
+++ |+#include <cstdint>
...

Добавили исправление в основной репозиторий
https://github.com/Crypt...70ced37b52c3a9780ca1acd4
Проверьте, пожалуйста, что теперь собирается успешно.
thanks 1 пользователь поблагодарил Ситдиков Денис за этот пост.
Бушминский Игорь оставлено 19.03.2025(UTC)
Offline Бушминский Игорь  
#3 Оставлено : 19 марта 2025 г. 14:04:08(UTC)
Бушминский Игорь

Статус: Новичок

Группы: Участники
Зарегистрирован: 19.12.2022(UTC)
Сообщений: 5

Сказал(а) «Спасибо»: 1 раз
Спасибо!
Библиотека успешно собралась.
Offline Бушминский Игорь  
#4 Оставлено : 19 марта 2025 г. 16:42:28(UTC)
Бушминский Игорь

Статус: Новичок

Группы: Участники
Зарегистрирован: 19.12.2022(UTC)
Сообщений: 5

Сказал(а) «Спасибо»: 1 раз
При запуске примеров (папка samples) получаю ошибки:
Цитата:

Unable to load DLL '../ccades/libccades' or one of its dependencies: Не найден указанный модуль. (0x8007007E)
Unable to load DLL '../ccades/libccades' or one of its dependencies: Не найден указанный модуль. (0x8007007E)
Unable to load DLL '../ccades/libccades' or one of its dependencies: Не найден указанный модуль. (0x8007007E)
Unable to load DLL '../ccades/libccades' or one of its dependencies: Не найден указанный модуль. (0x8007007E)


Пробовал перенести dotnetcades.dll (вместе с deps.json и .pdb) и ccades/libccades.so в свой проект, но получаю аналогичную ошибку.

Уточните, пожалуйста, как корректно подключить библиотеку к моему проекту?

Отредактировано пользователем 19 марта 2025 г. 16:46:24(UTC)  | Причина: Не указана

Offline Ситдиков Денис  
#5 Оставлено : 20 марта 2025 г. 11:07:58(UTC)
Ситдиков Денис

Статус: Администратор

Группы: Участники
Зарегистрирован: 01.03.2017(UTC)
Сообщений: 114
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 47 раз в 34 постах
Добрый день.
Убрали относительные пути до libccades в атрибуте DllImport
https://github.com/Crypt...f4f4a88a2807837d6b8e256d

Для работы библиотеки надо обеспечить доступность libccades.so для dlopen
https://www.mono-project...ared-library-search-path

Можно добавить путь до папки с собранной libccades.so в LD_LIBRARY_PATH или скопировать собранную библиотеку в /lib или /usr/lib.

Пример подключения dotnetcades в проект можно посмотреть для проекта samples
https://github.com/Crypt...n/samples/samples.csproj

Отредактировано пользователем 20 марта 2025 г. 11:13:32(UTC)  | Причина: Не указана

Offline sqrtly  
#6 Оставлено : 6 мая 2025 г. 10:07:04(UTC)
sqrtly

Статус: Новичок

Группы: Участники
Зарегистрирован: 30.04.2025(UTC)
Сообщений: 2
Российская Федерация

Привет! :)

У тебя ошибка из-за того, что компилятор не может найти типы данных типа uint64_t, uint32_t и так далее. Эти типы определяются в стандартной библиотеке C++ в файле <cstdint>, и, судя по всему, его забыли подключить в исходниках. Это довольно часто бывает.

Чтобы починить, сделай следующее:

В файле atlunixdefs.h и других, где встречаются ошибки с типами данных (например, в support.h), добавь строчку:

cpp
Копировать
Редактировать
#include <cstdint>
Это подключит нужный заголовок, который и определяет эти типы.

Попробуй снова собрать проект после этого.

Если не помогло, проверь, может у тебя стоит устаревшая версия библиотеки или какой-то не тот компилятор. Ну и еще можно посмотреть, может какие-то зависимости не установлены.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.