Visual Studio报错The procedure entry point xxx could not be located in thd dynamic link library...

之前能够跑的程序再次运行,报 The procedure entry point sms4_cbc_encrypt could not be located in thd dynamic link library C:\Users\Lenovo|Documents\Visual Studio 2015\Projects\auth_device\Debug\auth_device.exe,百思不得其解,图示如下:

Visual Studio报错The procedure entry point xxx could not be located in thd dynamic link library..._第1张图片

最后我仔细理解了一下这句报错的内容,看了一下 C:\Users\Lenovo|Documents\Visual Studio 2015\Projects\auth_device\Debug\auth_device.exe 是你的代码的启动程序,报错大意就是这个启动程序找不到 sms4_cbc_encrypt 这个方法的实现。

这里有三种解决办法:

第一种解决方法是,在系统环境变量中添加 dll 文件所在目录(这里着重要注意的是,只要修改了系统环境变量就需要重启Visual Studio,需要关闭所有VS窗口,因为Visual Studio会在启动的时候将环境变量全部加载完成,如果不重启Visual Studio则永远不会改变)。

第二种解决方法是,将需要依赖的 dll 文件放到系统的C:\Windows\System32\ 文件夹下也可以解决。

第三种解决方法是,将该代码依赖的Gmssl库打包成的 dll文件都移到 C:\Users\Lenovo|Documents\Visual Studio 2015\Projects\auth_device\Debug\ 下面,也就是需要和 auth_device.exe 平级,这样他才能在 dll 中找到这个方法的具体实现,再次运行,代码可以编译通过,图示如下:

Visual Studio报错The procedure entry point xxx could not be located in thd dynamic link library..._第2张图片

还有一个地方需要注意,调试 -> 属性 -> 常规 ,其中的目标文件扩展名、配置类型都需要是.exe,这样程序才可以运行调试,图示如下: 

Visual Studio报错The procedure entry point xxx could not be located in thd dynamic link library..._第3张图片

因为本人刚接触C语言不是很长时间,所以还有很多东西需要学习,到此问题解决。 

你可能感兴趣的:(Visual,Studio,Visual,Studio,Visual,Studio)