Làm thế nào để sử dụng hàm DllMain trong Qt Creater

Mình đang muốn chuyển một project DLL ở bên Visual Studio sang bên Qt (để sử dụng được một số thư viện của qt), nhưng mà ngặt nỗi là khi mình tạo một C++ Library Project bên Qt thì lại chẳng thấy hàm DllMain đâu cả, project của mình là DLL Hook nên rất cần hàm DllMain. Làm thế nào để có hàm đó đây :frowning:

up, nếu có cách nào kéo thư viện của qt sang visual cũng được ạ :confounded:

Mình chưa từng đụng đến dll file, tìm ra cái này ko biết có liên quan gì ko :dizzy_face:

Link này là bàn luận về cách load dll vào trong Qt, cái mình muốn là tạo DllMain trong C++ Library cơ :frowning:

Rốt cục thì mình tìm được cách tự thêm thư viện qt qua bên visual studio dựa trên cơ sở clip này: https://www.youtube.com/watch?v=cLvxLkgHqQs

Qt mình dùng là Qt cho VS2013 (toolset v120), các IDE khác phải tự build thôi, nếu cài VS cao hơn (như VS 2015) thì có thể lấy VS Express bản thấp hơn về cài chung để có được toolset đúng.
Configuration Properties->C/C+±>General->Additional Include Directories: dẫn tới thư mục include của Qt, thư mục này có nhiều thư mục con, dùng thư viện nào thì include thêm thư mục tương ứng. VD:

C:\Qt\Qt5.5\5.5\msvc2013\include\QtCore;
C:\Qt\Qt5.5\5.5\msvc2013\include\QtWidgets;
C:\Qt\Qt5.5\5.5\msvc2013\include

Configuration Properties->Linker->General->Additional Library Directories: dẫn tới thư mục lib của Qt, kiểu như:

C:\Qt\Qt5.5\5.5\msvc2013\lib

Configuration Properties->Debugging->Enviroment: thêm PATH vào trỏ tới thư mục bin của Qt, ví dụ:

PATH=C:\Qt\Qt5.5\5.5\msvc2013\bin;%PATH%

Configuration Properties->General->Platform Toolset: chọn toolset đúng với thư viện qt đang dùng (như trên là v120)

Xong rồi bấm #include rồi code như Qt, nhưng phải dùng thêm #pragma để trỏ tới các file lib, ví dụ:

#include <QFileDialog>
#include <QApplication>
#ifdef _DEBUG
#pragma comment(lib, "Qt5Cored.lib")
#pragma comment(lib, "Qt5Widgetsd.lib")
#else
#pragma comment(lib, "Qt5Core.lib")
#pragma comment(lib, "Qt5Widgets.lib")    
#endif

(QFileDialog thì lib của nó là Qt5Core.lib, QApplication thì lib của nó là Qt5Widgets)

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?