在我的工作目录中,有main.c和一个名为lib的文件夹,其中包含libtest.dll。
我使用
$ gcc main.c -ltest -L ./lib -Wl,-rpath=./lib
编译,编译过程没问题(没有警告和错误)。但是当我运行 a 时.exe系统会提醒
D:/MYSY2/home/user/code/a.exe:加载共享库时出错:libtest.dll:无法打开共享对象文件:没有这样的文件或目录
那么为什么编译时可以找到库,而运行时找不到库呢?
Windows 上的共享库是.dll
文件,通过查找与正在运行的.exe
文件位于同一文件夹中来定位,或者如果这不起作用,则通过查找PATH
环境变量指定的位置来定位。
因此,最好的解决方案是将.dll
文件复制到与.exe
文件相同的位置。
对于应用程序的分发,您可以使用copypedeps -r
from https://github.com/brechtsanders/pedeps 复制.exe文件以及任何依赖项.dll
文件,以防您不确定需要哪些文件。