Qt不适用于Botan_v1.10.1库

Qt不适用于Botan_v1.10.1库,qt,gcc,mingw,mingw32,botan,Qt,Gcc,Mingw,Mingw32,Botan,我一直在尝试让Qt4.7.3与最新的BotanV1.10.1库一起工作 有一个适用于Windows的Botan二进制文件,但*.dll文件似乎仅适用于MS Visual Studio。 所以我试着用mingw32编译Botan,这样我就可以得到Qt兼容的*.dll和*.a文件 一些额外信息: -Windows 7 64位。 -试图以32位模式编译。 -Qt是最新的产品,工作状态良好,安装在32位模式下。 -Botan是用于x86 Windows的v1.10.1 我打开Qt命令提示符并发出以下命令

我一直在尝试让Qt4.7.3与最新的BotanV1.10.1库一起工作

有一个适用于Windows的Botan二进制文件,但*.dll文件似乎仅适用于MS Visual Studio。 所以我试着用mingw32编译Botan,这样我就可以得到Qt兼容的*.dll和*.a文件

一些额外信息:
-Windows 7 64位。
-试图以32位模式编译。
-Qt是最新的产品,工作状态良好,安装在32位模式下。
-Botan是用于x86 Windows的v1.10.1

我打开Qt命令提示符并发出以下命令

configure.py --cc=gcc --cpu=x86
此命令生成一个Makefile

然后我使用了这个命令

mingw32-make
此命令在运行几分钟后生成以下错误

C:\Botan-1.10.1\src\utils\time.cpp:在函数“tm”中 植物学家::“时间” C:\Botan-1.10.1\src\utils\time.cpp:55:错误:未在此范围内声明“gmtime” mingw32 make:[build\lib\time.obj]错误1

我打开了C:\Botan-1.10.1\src\utils\time.cpp并更改了它

#if defined(BOTAN_TARGET_OS_HAS_GMTIME_S)
   gmtime_s(&tm, &time_val); // Windows
#elif defined(BOTAN_TARGET_OS_HAS_GMTIME_R)
   gmtime_r(&time_val, &tm); // Unix/SUSv2
#else
   std::tm* tm_p = std::gmtime(&time_val);
   if (tm_p == 0)
      throw Encoding_Error("time_t_to_tm could not convert");
   tm = *tm_p;
#endif  
对此

/*#if defined(BOTAN_TARGET_OS_HAS_GMTIME_S)
   gmtime_s(&tm, &time_val); // Windows
#elif defined(BOTAN_TARGET_OS_HAS_GMTIME_R)
   gmtime_r(&time_val, &tm); // Unix/SUSv2
#else*/
   std::tm* tm_p = std::gmtime(&time_val);
   if (tm_p == 0)
      throw Encoding_Error("time_t_to_tm could not convert");
   tm = *tm_p;
//#endif
然后我又跑了起来。这一次,它编译了更多的代码,并陷入了这个错误

C:\Botan-1.10.1>mingw32使进程开始:CreateProcess(NULL,rm-f libbotan-1.10.a,…)失败。make(e=2):系统无法找到 指定的文件。mingw32 make:[libbotan-1.10.a]错误2


我无法克服这个错误。任何帮助都将不胜感激。

您可以从Qt Creator源代码树中提取botan,并使用qmake和您的gcc构建它


或者,使用MinGW-w64的gendef或MinGW.org等效文件从DLL生成.def文件,并使用dlltool创建导入库。

您可以从Qt Creator源代码树中提取botan,并使用qmake和gcc构建它


或者,使用MinGW-w64的gendef或MinGW.org等效文件从DLL生成.def文件,并使用dlltool创建导入库。

谢谢,我对您建议的概念不太熟悉。关于第二个建议,我有一些问题。(1) 当您指的是*.dll文件时,您指的是Botan for Windows二进制安装附带的*.dll吗?(2) 从*.dll生成*.def文件是我可以依赖的吗?(1)是的,我指的是预构建的dll。(2) 总的来说,是的,有一些极端的情况,但我怀疑你是否会用开放源码库(如Botan.Mingw-w64)来解决这些问题。gendef似乎不想在windows上编译。谢谢,我对你提出的概念不太熟悉。关于第二个建议,我有一些问题。(1) 当您指的是*.dll文件时,您指的是Botan for Windows二进制安装附带的*.dll吗?(2) 从*.dll生成*.def文件是我可以依赖的吗?(1)是的,我指的是预构建的dll。(2) 总的来说,是的,有一些极端的情况,但我怀疑你是否能找到像Botan.Mingw-w64这样的开源库,gendef似乎不想在windows上编译。