gpt4 book ai didi

c++ - botan.dll 中未处理的异常

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:19 25 4
gpt4 key购买 nike

我正在尝试使用 botan 加密库运行最基本的程序。我正在使用 Botan 1.10 32 位。我在 Windows 7 上获得了带有安装程序的二进制文件。IDE 是 Visual Studio 2012。

我将我的项目链接到 botan.lib,但程序在启动时报告缺少 botan.dll,因此我假设 lib 仅链接到 dll。因此,我将 botan.dll 放在 Debug 文件夹中。

现在解决问题。

#include <iostream>

#include <botan/botan.h>
using namespace Botan;
using namespace std;

int main(int argc, char* argv[]) {
try {
cout << "d1";
LibraryInitializer init; //exception thrown here
}
catch(exception& e) {
cout << "Exception caught: " << e.what() << std::endl;
}
cout << "d2";
return 0;
}

Intellisense 检测到一切正常。当我尝试调试时,我得到:

First-chance exception at 0x6A1F2AA0 (botan.dll) in rsa.exe: 0xC0000005: Access violation reading location 0x00310000. Unhandled exception at 0x6A1F2AA0 (botan.dll) in rsa.exe: 0xC0000005: Access violation reading location 0x00310000.

botan.dll 中似乎抛出了一个异常,而我无法在我这边捕捉到它。我不能从这里走得更远。

是我在链接库时做错了什么,还是有其他问题?感谢帮助。

最佳答案

扩展我的评论:

如果您的程序即使在您的程序的发布版本中崩溃,您也必须下载源代码并自行构建(需要 python 来配置构建)。

如果发布版本没有崩溃,您可以在调试版本的 C++/代码生成 项目设置中禁用 /RTCs Stack Frames 运行时检查,这似乎是导致崩溃的原因。只需将设置从 Both 更改为 /RTCu Uninitialized Variables或者通过将其设置为 Default 来完全禁用它。

由于这是一种变通方法而不是解决方案,您应该考虑自己构建 botan 并同时构建发布和调试版本(然后您可以链接到调试版本您的调试构建并保留调试运行时检查。

引用documentation关于如何构建它(您需要 python 来运行配置):

构建发布版本(默认)后,将以下文件复制到另一个目录(例如 C:\Botan\release\),否则它们将在您构建调试版本时被覆盖:

  • botan.dll
  • botan.exp
  • botan.lib
  • botan.dll.manifest

现在再次运行configure,这次添加--enable-debug选项:

> python configure.py --cc=msvc --enable-debug

然后重新构建它。这一次,将文件(上面列出的)复制到 C:\Botan\debug\

将您的项目配置为链接到调试构建的调试目录中的库和发布构建的发布目录中的库。最后确保您的程序在运行时加载了适当的 DLL。

关于c++ - botan.dll 中未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13964404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com