GraphicsMagick 的 OpenCL 开发记录(二十五)

文章目录

  • [如何修复`R6025 pure virtual function call`问题](#如何修复R6025 pure virtual function call问题)

<2022-04-19 周二>

如何修复R6025 pure virtual function call问题

运气好,修复了这个问题。即,在ExitInstance()函数中调用一下MagickLib::DestroyMagick();即可。

过程中也经历了尝试vs2010编译,尝试更换电脑环境等,均没有找到原因,同时我也在怀疑会不会是IMDisplay.exe这个外部的测试程序问题引起的?毕竟ImageMagickGraphicsMagick的这个IMDisplay.exe程序相差也是很大的。

同时了解调用OpenCLTerminus()的所有地方,在nt_base.c:DllMain()DLL_PROCESS_DETACH里面调用DestroyMagick();是不是不好?

cpp 复制代码
case DLL_PROCESS_DETACH:
  DestroyMagick();
  break;

IMDisplay.cpp中只有InitInstance(),却没有ExitInstance(),是不是应该显示调用MagickLib::DestroyMagick();比交给系统处理DLL_PROCESS_DETACH更好呢?

值得注意的是如果将ImageMagick的如下代码修改成这样:

cpp 复制代码
BOOL CIMDisplayApp::ExitInstance()
{
  // Magick::TerminateMagick();
  return CWinApp::ExitInstance();
}

同时保证ImageMagickmagick-baseconfig.h中的ProvideDllMain宏启用:

cpp 复制代码
/*
  When building ImageMagick using DLLs, include a DllMain()
  function which automatically invokes MagickCoreGenesis(NULL), and
  MagickCoreTerminus() so that the user doesn't need to. This is disabled
  by default.
*/
#define ProvideDllMain

ImageMagick也同样会出现R6025的错误。

commitfix R6025 on windows

相关推荐
三月微暖寻春笋7 分钟前
【和春笋一起学C++】(五十)在构造函数中使用new时的注意事项
c++·new·构造函数
Chen--Xing12 分钟前
LeetCode 49.字母异位词分组
c++·python·算法·leetcode·rust
孤独冷15 分钟前
ComfyUI 本地部署精华指南(Windows + CUDA)
windows·python
_OP_CHEN33 分钟前
【算法基础篇】(三十三)动态规划之区间 DP:从回文串到石子合并,吃透区间类问题的万能解法
c++·算法·蓝桥杯·动态规划·算法竞赛·acm/icpc·区间动态规划
coderxiaohan39 分钟前
【C++】无序容器unordered_set和unordered_map的使用
开发语言·c++
He BianGu1 小时前
【笔记】在WPF中如何使用ContentPresenter 与 Generic.xaml 设置数据默认 DataTemplate
windows·笔记·wpf
itas1091 小时前
windows单网卡配置多网段IP
windows·网络协议·tcp/ip·多网段ip
charlie1145141911 小时前
深入理解CC++的编译与链接技术9:动态库细节
c语言·开发语言·c++·学习·动态库
isyoungboy1 小时前
c++使用win新api替代DirectShow驱动uvc摄像头,可改c#驱动
开发语言·c++·c#
世转神风-1 小时前
qt-windows用户点击.exe,报错:缺少libgcc_s_seh-1.dll
c++·qt