【问题标题】:Qt DLL not loading (when using Qwt inside)Qt DLL 未加载(在内部使用 Qwt 时)
【发布时间】:2012-03-05 13:31:28
【问题描述】:

我正在尝试在我的一个 Qt DLL 中使用 Qwt。

问题是,如果我在里面调用 QwtPlot 的构造函数,则库不会加载。如果我将其注释掉,它会加载。请注意,当取消注释 QwtPlot 时,DLL 会成功构建。

我正在使用 Visual Studio 2010。

有什么想法吗?

编辑(加载 dll 的代码,尽管代码对于内部没有 QWT 的 dll 工作得很好):

typedef bool (*EntryPointPtr)(); 
HINSTANCE _pDLL; 
EntryPointPtr _pFn; 
_pDLL = ::LoadLibrary("..\\MyDll.dll"); 
_pFn = (EntryPointPtr) ::GetProcAddress(_pDLL, "qtLoader");
_pFn();

【问题讨论】:

  • “不加载”是什么意思?它崩溃了,给你一个消息,......?
  • 只是不加载。不崩溃,不给出任何消息。当我按下加载 dll 的按钮时没有任何反应
  • 你能至少显示加载.dll的代码
  • 也许把它扔进 Dependency Walker 看看它是否会尝试加载任何东西?
  • 我在我的 dll 的入口点放置了一个断点,当取消注释 QwtPlot 构造函数时它没有到达它。当我发表评论时,一切正常。我猜这与 QWt 有关...

标签: visual-studio-2010 qt qwt


【解决方案1】:

问题已解决,对于可能再次遇到相同问题的任何人,这里都提供了解决方案。

最初我设置项目设置如下:

  1. VC++ 目录 -> 包含目录 -> QWT src 文件夹的路径
  2. VC++ 目录 -> 库目录 -> QWT lib 文件夹的路径
  3. 链接器 -> 输入 -> 附加依赖项 -> qwtd.lib 或 qwt.lib (根据调试模式)

需要做的是:

  1. C/C++ -> 常规 -> 其他包含目录 -> QWT 的路径 src 文件夹
  2. 链接器 -> 常规 -> 其他库目录 -> QWT 的路径 lib 文件夹
  3. 链接器 -> 输入 -> 附加依赖项 -> qwtd.lib 或 qwt.lib(根据调试模式)

似乎 Visual Studio 无法使用初始选项正确链接它。

附言。感谢您的帮助。您的回答引导我朝着正确的方向前进,并最终帮助我找出问题所在。向你们所有人致敬。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 2012-02-23
    相关资源
    最近更新 更多