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

相关推荐
QiLinkOS5 分钟前
合肥气链科技有限公司本质总结
c++·科技·算法·gitee·开源
Yuk丶7 分钟前
厌倦了假AI对话?本地 LLM 语音对话 + 口型同步系统 2.0(已开源!)
c++·人工智能·语言模型·开源·ue4·语音识别·游戏开发
kyle~16 分钟前
ROS2---零拷贝
linux·c++·机器人·ros2
资源分享助手19 分钟前
PeekDesktop:实现类似 macOS Sonoma 点击桌面预览(Windows工具教程)
windows·macos·点击回到桌面
Ricky_Theseus19 分钟前
栈 & 队列 应用场景
数据结构·c++
薇茗20 分钟前
【C++】类与对象 核心篇
开发语言·c++
ouliten21 分钟前
C++笔记:偏现代C++日志系统
c++·笔记
猪脚饭还是好吃的22 分钟前
【分享】C4droid 安卓C++编译器 手机编程超便捷
android·c++·智能手机
草莓熊Lotso22 分钟前
【Linux网络】深入理解传输层 UDP 协议:从底层原理到实战应用
linux·运维·服务器·c语言·网络·c++·udp
小欣加油24 分钟前
leetcode542 01矩阵
数据结构·c++·算法·leetcode·矩阵·bfs