QTCreator使用外部DLL进行调试

时间:2018-04-03 13:30:25

标签: c++ qt debugging sqlite dllimport

大家好!

以下将是我解决的问题,但对于某人来说可能有用

我有一个项目,我从 Visual Studio 2015 开始,因为我想要 GUI 我正在从Visual Studio更改为QTCreator。(是的,我知道,为什么尚未在QT开始)

所以我已经和QTCreator一起工作了几次没什么大不了的。我没有任何问题地使用它的调试器。

从VS-> QT,普通C ++应用程序

移动

我将所有文件移动到一个单独的文件夹中。我开始使用普通的C ++应用程序。(当我无法包含时,我不得不包括QT框架,我将这些行添加到.pro文件中: QT + = core gui QT + = widgets

调试器无法正常工作。

  1. 我构建了debug
  2. 我按F5,或点击调试构建选项
  3. 我放了一个断点
  4. 调试器只是跳过放置的断点。我不知道为什么,但是当我编辑断点的类型时:打破内存地址 然后调试器工作,并在放置的断点处停止,我看到汇编代码。

    然后我开始了一个新的QT Widgets应用程序

    并希望它能够奏效,但事实并非如此。

    我也在论坛上阅读过指南。他们都没有解决问题。

    我的尝试:

    1. 依赖步行者
    2. 编辑了.pro文件,因此包含正常
    3. 更改了工具包,调试器(调试器和工具包为32位)
    4. 检查sqlite3 dll是32位版本,也试过64位
    5. 我缩小了可能存在的问题列表

      我想使用 sqlite3 并使用QT构建GUI,我开始考虑问题可能在于包含过程。

      我的.pro文件看起来像

      
      
      ...
      
      HEADERS += \
      
      ... 
      
      resources/sqlite3QT/sqlite3.h \
      
      INCLUDEPATH += resources/
      
      DISTFILES += \
          resources/sqlite3QT/sqlite3.lib
      
      #
      LIBS += -L"$$_PRO_FILE_PWD_/resources/sqlite3QT" -lsqlite3
      
      win32:CONFIG(release, debug|release): LIBS += -L$$PWD/resources/sqlite3QT/ -lsqlite3
      else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/resources/sqlite3QT/ -lsqlite3
      
      
      

      评论说明 # LIBS + = -L" $$ _ PRO_FILE_PWD_ / resources / sqlite3QT" -lsqlite3  另一种尝试是以不同的方式包含.lib。

      因此,如果我注释掉所有sqlite3对象以及使用任何sqlite3的函数,调试器将在放置的断点处工作并停止

      好的,所有标题,来源和一个库都被正确包含在内。 还需要包括哪些内容?

      .dll文件可能,所以因为我使用Windows而且我知道操作系统会搜索.dll,并且.exe​​位于那里操作系统首先开始查找,我将.dll放入/ debug /文件夹。因为当我在调试模式下使用QT编译时,这就是放置所有内容的地方。

      不再有CDB错误

      它解决了这个问题所以我不再得到"意想不到的CDB退出"标签," CDB流程终止。"错误。

      小"实验"我试图将64位版本放在32位版本的sqlite3.dll上,在我的情况下发生同样的错误(使用32位cdb.exe和32位工具链)

0 个答案:

没有答案