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

相关推荐
8Qi85 分钟前
Windows 系统Claude Code安装与使用笔记
windows·笔记·agent·claudecode
c_lb72888 分钟前
期货量化策略从 Windows 迁到 Linux 服务器:环境注意点
linux·服务器·windows·python
万法若空14 分钟前
C/C++基本类型表示范围
c语言·开发语言·c++
凡人叶枫23 分钟前
Effective C++ 条款15:在资源管理类中提供对原始资源的访问
linux·开发语言·c++·stm32·单片机
郝学胜-神的一滴24 分钟前
中级OpenGL教程 009:用环境光告别模型死黑
前端·c++·unity·godot·图形渲染·opengl·unreal
骑士雄师29 分钟前
18.1 星系案例:多智能体宇宙探索系统(学习langgraph 的存储知识)
windows·python·学习
cccyi71 小时前
C++ 面试题整理
c++·面试
韭菜钟1 小时前
Windows下编译coal
windows
crack_comet1 小时前
修复 Claude Code TypeScript LSP 在 Windows 上启动失败的问题
windows·typescript·里氏替换原则
代码中介商1 小时前
C++ 智能指针完全指南(二):shared_ptr 深度详解
开发语言·c++