我是 Win 环境的新手,尝试编写使用 win 内核 API 但在 Ubuntu 10.04 上的代码……使用 mingw32(更具体地说,i586-mingw32msvc)
我的代码:
#include<ddk/winddk.h>
int main()
{
return 0;
}
但是我在使用 ddk/winddk.h 标头时遇到了很多错误:编译为:i586-mingw32msvc-gcc WaitForSingleObj_2.c
所有错误都是这样的:
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/winddk.h:9208: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'NTSTATUS'
我为此错过了什么吗?当我尝试使用头文件 iostream 和 windows.h 进行编译时,效果很好。
编辑:
#include<ntdef.h>
#include<ddk/ntddk.h>
#include<ddk/winddk.h>
#include<ddk/ntddndis.h>
int main()
{
KTIMER *timer;
KeInitializeTimer(timer);
return 0;
}
直到 KTIMER 很好,现在是新错误:/tmp/cc0epAQA.o:WaitForSingleObj_2.c:(.text+0x1d): undefined reference to `_ imp _KeInitializeTimer@4' collect2: ld returned 1 exit status
谁能告诉我,现在要包含哪个头文件?
编辑:[正如其他人已经评论过的,我经历过(!)请尽量避免使用其他平台进行 Windonws 内核开发]
我切换到 Visual C++ Express,下载了 WDK,从 Project Property->c/c++ .. ->Additional Include directory (C:\WinDDK\7600.16385.1\inc\ddk;C:\WinDDK\7600.16385. 1\inc\api;)
但是(我讨厌这个但是!)我遇到了很多编译错误,比如
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\crtdefs.h(543): error C2143: syntax error : missing ')' before 'const'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\crtdefs.h(543): error C2143: syntax error : missing '{' before 'const'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\crtdefs.h(543): error C2059: syntax error : ','
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\crtdefs.h(543): error C2059: syntax error : ')'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\crtdefs.h(550): error C2143: syntax error : missing ')' before 'const'
我的代码:
#include <wdm.h>
int mian()
{
/*
* PKTIMER Timer;
*/
}
如果有人有想法请帮忙!