我正在尝试使用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可以检测到一切正常。当我尝试调试时,我得到:
似乎在botan.dll中引发了异常,我无法捕获它。我不能再从这里走了。
链接到库时我做错了什么吗?还是有其他问题?帮助表示赞赏。
最佳答案
扩展我的评论:
如果即使使用发行版的程序您的程序也崩溃,则必须下载源代码并自己进行构建(配置该版本需要python)。
如果发行版本没有崩溃,则可以在/RTCs Stack Frames
项目设置中为调试版本禁用C++/Code Generation
运行时检查,这似乎是导致崩溃的原因。只需将设置从Both
更改为/RTCu Uninitialized Variables
或通过将其设置为Default
完全禁用它。
由于这是一种解决方法,而不是解决方案,因此您应该考虑自己构建botan并同时构建发行版和调试版(然后您可以链接到
您的调试版本,并保持调试运行时检查不变。
请引用documentation上的构建方法(您需要python来运行配置):
构建发行版本(默认)后,请将以下文件复制到另一个目录(例如C:\Botan\release\
),否则在构建调试版本时它们将被覆盖:
现在再次运行configure,这次添加
--enable-debug
选项:> python configure.py --cc=msvc --enable-debug
并再次构建它。这次,将文件(上面列出的)复制到
C:\Botan\debug\
。将项目配置为链接到调试目录中的调试库(用于调试版本)和发布目录中的库(用于发布版本)。
最后,请确保您的程序在运行时加载适当的DLL。
关于c++ - botan.dll中未处理的异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13964404/