今天在编译项目时项目可以编译通过,但运行是报错 无法定位程序输入点gdal201.dll于动态链接库上.突然觉得好奇怪,后来在网上查找了一下资料。具体参看【问题解决】无法定位程序输入点~于动态链接库上(The procedure entry point ~ could not be located)。文中指出出现这种错误,很大可能是因为,在生成exe时所使用的lib文件的版本,和在运行exe时所调用的dll的版本不一致。后来一想这几天配置了Qgis环境,在path中添加了Qgis相关dll环境变量,Qgis中有使用gdal201.dll。如是把Qgis相关dll环境变量去掉保存下。然后关闭visual studio再打开(记得一定要要关闭visual studio重新打开),重新运行就不再报错了。

另外要注意下dll目录查找顺序,可能其他目录dll与lib冲突也可能会出现同样的问题,
可执行文件在运行时寻找和调用dll文件的路径搜索顺序。一般是:
A 可执行文件所在目录;
B 进程当前目录;
C 系统目录,%SystemRoot%/system32
D 16位系统目录;,%SystemRoot%/system
E Windows目录,%SystemRoot%/
F 环境变量PATH中的目录;