ITK ERROR: ImageFileReader(0000017CCB9E7130): An empty string can’t be used as an input identifier" thrown in the test body.
创建了一个新的工程,写了一个函数,用于读取NIFTI文件,在Release模式下读取正常,但是使用Debug模式,在读取图像的时候,在运行时会报错:
WARNING: In D:\ITK\InsightToolkit-5.2.1\Modules\Core\Common\src\itkLightObject.cxx, line 196
LightObject (0000017CCB9E7130): Trying to delete object with non-zero reference count.
unknown file: error: C++ exception with description "D:\ITK\InsightToolkit-5.2.1\Modules\Core\Common\src\itkProcessObject.cxx:268:
ITK ERROR: ImageFileReader(0000017CCB9E7130): An empty string can't be used as an input identifier" thrown in the test body.
起初一直没有搞明白为什么,在检查*.lib
文件,一直都没有发现问题。直到在另一个工程下面,使用相同的代码,没有任何问题,查看项目配置的时候,无意发现Debugging->Environment
里面有PATH=path_for_itk_bin_debug;%PATH%
的配置。
这才发现,我已经把ITK的bin/Release
写入了环境变量,导致在Release模式下,没有设置运行配置,会直接读取环境变量里面的值,所以运行时候是正确的。但是到了Debug模式下,在没有添加PATH=path_for_itk_bin_debug;%PATH%
的配置,还是读取的Release模式下的dll文件,所以导致了出错。
在Debugging->Environment
里面添加了PATH=path_for_itk_bin_debug;%PATH%
的配置就好了。