30/09/2018, 18:23

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

明玉 viết 20:39 ngày 30/09/2018

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

... viết 20:35 ngày 30/09/2018

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

stackoverflow.com
Bad Man

Importing .dll into Qt

c++, qt, dll
asked by Bad Man on 05:56AM - 07 Apr 10
明玉 viết 20:25 ngày 30/09/2018

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ơ

明玉 viết 20:32 ngày 30/09/2018

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)

Bài liên quan
0