【问题标题】:The procedure entry point CryptAcquireContextA could not be located in the dynamic link library C:\myexe.exe无法在动态链接库 C:\myexe.exe 中找到过程入口点 CryptAcquireContextA
【发布时间】:2020-06-04 11:54:05
【问题描述】:

我用 Crypto++ 编译了一个程序,当我尝试启动它时,我得到了下面的错误消息。 CryptAcquireContextA 被 Crypto++ 和 boost 使用。

The procedure entry point CryptAcquireContextA could not be located in the dynamic link library C:\myexe.exe

CryptAcquireContextA 函数位于 Advapi32.dll 中,我已经尝试将其复制到我的 .exe 旁边。我尝试链接到-ladvapi32,但这也没有用。

我在 Ubuntu 下编译 Crypto++ 并使用 i686-mingw-w64 进行增强。

这是我得到的确切错误的屏幕截图:

这里是依赖walker的截图:

CryptAcquireContextA 位于 ADVAPI32.DLL 中,由 cryptopp 使用。
我在可执行文件旁边有 WINFSP-X64.DLL,它并没有抱怨那个。

我也尝试使用 x86_x64-mingw-w64 编译它,这就是我使用 WinFsp 的 x64 dll 的原因。

我刚刚注意到 WinFsp 也在使用 CryptAcquireContextA,所以问题可能出在 WinFsp 中。可能和mingw不兼容?

【问题讨论】:

  • “但这也没用” - 发生了什么?
  • @sehe 与标题中的错误相同。什么都没有改变...
  • 如果您使用-static 构建程序会发生什么?您实际上是在 Windows 上运行程序,还是使用 Wine?
  • @BrechtSanders 我正在使用 VirtualBox 在 Windows 10 VM 中运行我的程序。我尝试使用-static 进行编译。我现在不再需要任何额外的 dll,但错误仍然存​​在。
  • @Gary 你能发布你得到的确切错误以及你得到它的确切时间吗?另外,您能否使用 Dependancy Walker (dependencywalker.com) 检查您的 .exe 以查看它仍然依赖于哪些 DLL?

标签: c++ boost mingw crypto++


【解决方案1】:

您没有显示整个 Dependency Walker 窗口的屏幕截图,但据我所知,您正在将 win64 exe 与 win32 DLL 混合。

在打开 .exe 文件时,Dependency Walker 没有告诉您这一点吗?

【讨论】:

    猜你喜欢
    • 2013-03-19
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    相关资源
    最近更新 更多