gpt4 book ai didi

链接&编译后C执行错误

转载 作者:太空宇宙 更新时间:2023-11-04 04:20:41 30 4
gpt4 key购买 nike

我在尝试链接到外部库时得到了一些奇怪的结果。如果我从命令行运行以下命令:

gcc fftwTest.c -I../extlib/fftw-3.3.5-dll32 -L../extlib/fftw-3.3.5-dll32 -lfftw3-3 -lm -o test

test.exe 编译,但当我运行它时,我收到一条错误消息,指出程序无法启动,因为我的计算机缺少 libfftw3-3.dll。尽管链接器在编译时发现了它。

相反,如果我将 libfftw3-3.dll 放入与我的 fftwTest.c 文件相同的目录中并在那里执行 -L,它编译并运行正常。所以我想这表明我的 -L 命令做错了,但在链接和编译时我不太清楚是什么。

如有任何帮助,我们将不胜感激。

谢谢!

最佳答案

您的链接命令没有任何问题,是的,链接器在编译时发现了它,因为您指定了它的路径,但是在运行程序时情况就不同了(链接器不会/cannot 对路径进行硬编码DLL,它可能位于部署机器上的其他地方。

DLL 必须位于系统路径中或与可执行文件位于同一目录中。在您的情况下,您可以:

  • 复制 .exe 目录中的 DLL(您自己找到的)
  • 或在批处理文件中启动可执行文件之前添加:set PATH=%PATH%;../extlib(或使用 Windows 环境变量管理在系统路径中设置完整的绝对路径)

将包分发给第三方时,复制可执行目录中的DLL更好,因此不需要配置,但是,如果您多次使用/升级DLL并且在很多小程序上,最好的解决方案是你的开发机器是将它放在一个地方并设置系统 PATH 来运行它(这是权衡)

关于链接&编译后C执行错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47236727/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com