一个关于动态库中静态调用MKL崩溃的问题

这两天遇到一个奇怪的问题,测试客户的使用场景,需要用intel的MKL库重新封装一个DLL文件,然后主叫程序中不断的对此DLL进行load/call/free循环,结果每运行到第542次的时候主叫程序就自动退出了,没有任何返回,google搜索相关的问题也没有发现可用信息,最后在intel的论坛上,发现有MKL这个项目,然后附上自己的测试代码,描述清楚问题,看看有没有人回复。我是下班前17点多发布的帖子,到家后8点查看竟然已经有人回复了,回复内容如下:

“对于静态使用MKL的dll,在卸载dll时要释放mkl的内存,方法如下,在DLLMain中添加释放的动作”:

第二天早早的来到公司,对上述方法进行了测试,不论是单独调用MKL,还是MKL与LDK产品一起使用,都不再出现任何异常,很完美。原帖地址如下:

https://software.intel.com/en-us/forums/intel-math-kernel-library/topic/628273

后记:
--MKL是Math Kernel Library的缩写,需要按照Intel Studio,Intel Studio安装后有30天的免费试用期,如果机子上有vs,会自动安装vs的插件,并且提供了command环境模式,对于简单的测试用例,直接用cl/link编译链接,简单快捷。

发表评论

电子邮件地址不会被公开。 必填项已用*标注