[英]Using Win32 API in QT for Windows
我正在从.net C#迁移到QT C ++,我正在尝试使用此Win32函数在QT中模拟驱动器:
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern bool DefineDosDevice(int flags, string devname, string path);
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern int QueryDosDevice(string devname, StringBuilder buffer, int bufSize);
上面的代码是在C#中,但是我不知道如何在QT中使用它们,有人可以给我一个例子如何做到这一点以及如何在QT中使用任何Win32 API?
查看DefineDosDevice和QueryDosDevice的文档,您将在表格底部看到它们都在“kernel32.lib”库中定义,并在“Windows.h”(间接)中声明。
在你的代码中,你应该#include <Windows.h>
:然后你就可以直接调用它们了。
我不确定您的特定编译器/ IDE,但如果您在链接时遇到有关“未解析的引用”的错误,则可能需要将“kernel32.lib”(来自Windows SDK)添加到库路径中。
您可以将win32 API用作常规C函数。 QT和其他C ++程序没有区别。
谢谢你的回答! 我的问题的答案是:
#include <Windows.h>
void MainWindow::on_pushButton_clicked()
{
QString qstr1 = "Z:";
QString qstr2 = getenv("tmp");
DefineDosDevice(0, (LPCTSTR)qstr1.utf16(), (LPCTSTR)qstr2.utf16());
}
void MainWindow::on_pushButton_2_clicked()
{
QString qstr = "Z:";
DefineDosDevice(2, (LPCTSTR)qstr.utf16(), 0);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.