为一个仿真软件(Simulate.exe)开发了一个计算插件(MySolver.dll), 在该计算插件中会调用到Intel的MKL库(mkl_sequential.dll, ...). 这个计算插件在仿真软件中是动态加载的, 仿真完成后就释放, 也会同时释放MKL库.
现在的问题是: 启动仿真软件(Simulate.exe)后, 调入相应模型, 开始进行仿真计算, 这是会加载MySolver.dll以及其他相关的动态库(包括mkl), 然后计算一切正常, 完成后会卸载MySolver.dll. 然而要再次进行仿真计算时, 会重新加载MySolver.dll和相关库, 这时一调用mkl内相关函数就会出现异常, 导致计算失败, 异常的原因不明.
不知道是否把问题描述清楚了, 有没有人知道或者遇到类似的问题, 可以提供一些帮助信息, 非常感激!
------解决方案--------------------------------------------------------
你可以使用MKL custom DLL 工具建一个自己的DLL(使用MKL的静态库),然后在程序中,使用这个新建的DLL. 这样程序在加载的使用,将不再依赖于MKL的DLL.