【问题标题】:C++ program can't start because a .dll is missing, but it should be looking for a .libC++ 程序无法启动,因为缺少 .dll,但它应该正在寻找 .lib
【发布时间】:2017-03-16 08:57:48
【问题描述】:

我正在使用 QT Creator 开发应用程序。在 QTC 中运行代码会导致程序崩溃,所以我去了程序的可执行文件的路径。当我尝试运行它时,我收到消息:“程序无法启动,因为您的计算机中缺少 libname.dll。”这很奇怪,因为 libname.dll 不存在,但 libname.lib 存在。

在我的应用程序的 .pro 文件中,链接适当的库时会自动插入以下行:

    unix:!macx|win32: LIBS += -L$$PWD/../../libname/lib/ -luhd

    win32:!win32-g++: PRE_TARGETDEPS += $$PWD/../../libname/lib/uhd.lib
    else:unix:!macx|win32-g++: PRE_TARGETDEPS +=   $$PWD/../../libname/lib/libuhd.a

我查看了 qmake 文件,没有提到 libname.dll,所以这里有什么我可能遗漏的吗?

【问题讨论】:

  • 如果 .lib 是一个导入模块,它将尝试加载其对应的 DLL。
  • 请注意,即使在 Windows 上,Qmake 也可以处理 LIBS += L$$PWD/../../libname/lib/ -luhd
  • 你要么需要 DLL,要么需要一个独立的库。好像你也没有。
  • 您缺少一些特定于操作系统(可能是 Windows 或 Win32)的标签

标签: c++ qt c++11


【解决方案1】:

您需要将库编译为 .dll。

Windows 程序依赖 .dll 运行,而 Linux 程序依赖 .lib。您的问题是您尝试在 Windows 可执行文件上使用 Linux 库文件。

使用 Windows 编译器 (MSVC/MinGW) 为您的库查找/构建 .dll,然后将其放在您的可执行文件旁边,就像您为 Qt DLL 所做的那样

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-01
    • 2012-01-03
    • 2019-03-21
    • 2011-06-09
    • 2017-09-04
    • 2016-01-13
    • 2011-10-08
    • 2014-07-10
    相关资源
    最近更新 更多