C++ 在QT for Windows中使用Win32 API
我正在从.NET C++到qt++,我尝试用这个Win32函数来模拟Qt:中的驱动器。C++ 在QT for Windows中使用Win32 API,c++,qt,winapi,C++,Qt,Winapi,我正在从.NET C++到qt++,我尝试用这个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.Aut
[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?您可以将Win32 API用作常规C函数。Qt和其他C++程序没有区别。
查看文档,在下面的表中,它们都在“Keln3L.LB”库中定义,并在“Windows .h”中声明(间接)。 在你的代码中,你应该
#包括:这样你就可以直接给他们打电话了
我不确定您的特定编译器/IDE,但如果您在链接时遇到关于“未解析引用”的错误,您可能需要将“kernel32.lib”(来自Windows SDK)添加到库路径中。谢谢您的回答!
我的问题的答案是:
#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);
}
#包括
void主窗口::在按钮上单击()
{
QString qstr1=“Z:”;
QString qstr2=getenv(“tmp”);
定义了设备(0,(LPCTSTR)qstr1.utf16(),(LPCTSTR)qstr2.utf16();
}
void main window::在按钮上点击按钮
{
QString qstr=“Z:”;
定义设备(2,(LPCTSTR)qstr.utf16(),0);
}
您肯定不需要自己声明definedDevice
函数,它已经在Windows.h
中声明过了。你当然不应该两者兼而有之。