Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在QT for Windows中使用Win32 API_C++_Qt_Winapi - Fatal编程技术网

C++ 在QT for Windows中使用Win32 API

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

我正在从.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.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
中声明过了。你当然不应该两者兼而有之。