Зависимости от CryptReleaseContext и других вызовов Advapi32 с Cgo

У меня есть бинарный код go (давайте назовем A) с использованием двух dll (B и C) через cgo. Обе библиотеки DLL написаны на языке C ++ и не зависят от библиотек Windows, поэтому для любых библиотек winapi не было установлено никаких явных ссылок.

cgo использует migw 4.9.2 для его компиляции.

Проблема есть; когда я компилирую и запускаю A, он не может начать говорить «… CryptReleaseContext не может быть расположен в библиотеке динамических ссылок …».

Я вижу ходячего в зависимости;

только «B» -> зависит от Advapi32.dll.

только «C» -> зависит от Advapi32.dll.

«A» (исполняемый файл go) -> также зависит от Advapi32.dll. Ну и конечно же Б и С.

В этом контексте «А», когда я нажимаю на зависимости;

C -> имеет функции, которые я действительно использую в списке. Advapi32.dll является также перечислены в зависимостях с 3 функциями, перечисленными как используемые в нем. но CryptAcquireContextW, CryptGenRandom, CryptReleaseContext выглядит как неразрешенные функции на уровне библиотеки C.

B -> эти три функции там вообще не перечислены, но реальный контент указан правильно.

Итак, мой вопрос: почему эти 3 функции winapi, похоже, определены в библиотеке «C». Как один из них, когда я проверяю Advapi32.dll, я также вижу, что эти 3 функции определены в нем и уже используются.

Другой вопрос, так как они являются функциями c без искажения или декорирования, почему их нельзя найти в контексте A.exe во время выполнения, разрешенного из Advapi32.dll?

Поскольку и B, и C имеют одинаковые флаги компиляции / компоновщика, я подозреваю, что здесь кое-что о cgo.

Следующее — лучший вид объяснения выше. Любые идеи приветствуются.

Dump of file A.exe

File Type: EXECUTABLE IMAGE
Section contains the following imports:

ADVAPI32.dll
9B0818 Import Address Table
9B00F4 Import Name Table
0 time date stamp
0 Index of first forwarder reference
B.dll
9B0B20 Import Address Table
9B0400 Import Name Table
0 time date stamp
0 Index of first forwarder reference

54C correct_function_from_B
C.dll
9B0EB8 Import Address Table
9B0798 Import Name Table
0 time date stamp
0 Index of first forwarder reference

31 correct_function_from_C
DB CryptReleaseContext
D1 CryptGenRandom
C1 CryptAcquireContextW

`

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …