求助。只包含头文件就生成不了。各位大侠帮忙看看呗

U华哥 2012-04-15 12:14:10
以下是代码。
// testexe.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <WinDef.h>
#include <Winbase.h>
#include <stdlib.h>
#include <cstring>
#include <afx.h>
//#define FN_TESTDLL_DLL "tesedll.dll"
int _tmain(int argc, _TCHAR* argv[])
{
// char szFilePath[_MAX_PATH];
// int pos;

// GetModuleFileName(NULL, szFilePath, sizeof(szFilePath));
// CString szPath(szFilePath);
// szPath.MakeUpper();
// pos = szPath.Find("TESTEXE.EXE");
// CString szExePath;
// szExePath = szPath.Left(pos);

// HINSTANCE hProtocol;
// hProtocol = LoadLibrary((LPCTSTR)(szExePath+FN_TESTDLL_DLL));



return 0;
}

以下是生成的时候的错误信息。我的操作系统是64位win7旗舰版,用的VS2010。创建的是预编译控制台程序。字符集用的多字节字符集。是不是我的环境有问题啊。求教各位大侠了!

1>------ 已启动生成: 项目: testexe, 配置: Debug Win32 ------
1>生成启动时间为 2012/4/15 0:12:53。
1>InitializeBuildStatus:
1> 正在对“Debug\testexe.unsuccessfulbuild”执行 Touch 任务。
1>ClCompile:
1> 所有输出均为最新。
1> testexe.cpp
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(6361): error C2146: 语法错误: 缺少“;”(在标识符“ContextRecord”的前面)
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(6361): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(6361): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(12983): error C2065: “PCONTEXT”: 未声明的标识符
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(12984): error C2146: 语法错误: 缺少“)”(在标识符“ContextRecord”的前面)
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(12984): warning C4229: 使用了记时错误: 忽略数据上的修饰符
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(12984): error C2182: “RtlCaptureContext”: 非法使用“void”类型
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(12984): error C2491: “RtlCaptureContext”: 不允许 dllimport 数据 的定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(12984): error C2059: 语法错误:“)”
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(13372): error C2143: 语法错误 : 缺少“;”(在“__stdcall”的前面)
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(13372): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(13376): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(14982): error C3861: “__readfsdword”: 找不到标识符
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(1048): error C2146: 语法错误: 缺少“;”(在标识符“LPCONTEXT”的前面)
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(1048): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(1048): error C2378: “PCONTEXT”: 重定义;符号不能由 typedef 重载
1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(13372) : 参见“PCONTEXT”的声明
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(1048): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(3610): error C2061: 语法错误: 标识符“PCONTEXT”
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(4449): error C2061: 语法错误: 标识符“LPCONTEXT”
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(4457): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(4457): error C2143: 语法错误 : 缺少“,”(在“*”的前面)
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(15112): error C2143: 语法错误 : 缺少“;”(在“__stdcall”的前面)
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(15112): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winbase.h(15116): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(24): fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
1>
1>生成失败。
1>
1>已用时间 00:00:00.49
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========


...全文
603 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
青竹居士 2014-06-02
  • 打赏
  • 举报
回复
引用 1 楼 Jim_King_2000 的回复:
#include <Windows.h> 即可。
我的可以了,谢谢哦
Jim_King_2000 2012-04-15
  • 打赏
  • 举报
回复
这不是你的问题。微软的头文件本来就有依赖关系,有时候必须按一定的顺序包含才可以,而这种顺序鬼才知道。总之,写windows程序,包含Windows.h即可。
U华哥 2012-04-15
  • 打赏
  • 举报
回复
亲,解决了,太感谢啦,你能告诉我一下原理么?我会记住这个问题的,这是一个宝贵的经验啊。
[Quote=引用 5 楼 的回复:]

#include <WinDef.h>
#include <Winbase.h>
#include <afx.h>
去掉这三个头文件。
[/Quote]
Jim_King_2000 2012-04-15
  • 打赏
  • 举报
回复
#include <WinDef.h>
#include <Winbase.h>
#include <afx.h>
去掉这三个头文件。
U华哥 2012-04-15
  • 打赏
  • 举报
回复
还是先谢谢你!
[Quote=引用 1 楼 的回复:]

#include <Windows.h>
即可。
[/Quote]
U华哥 2012-04-15
  • 打赏
  • 举报
回复
// testexe.cpp : 定义控制台应用程序的入口点。
//

#include <WinDef.h>
#include <Winbase.h>
#include <stdlib.h>
#include <cstring>
#include <afx.h>
#include <Windows.h>
//#define FN_TESTDLL_DLL "tesedll.dll"
int tmain()
{
// char szFilePath[_MAX_PATH];
// int pos;

// GetModuleFileName(NULL, szFilePath, sizeof(szFilePath));
// CString szPath(szFilePath);
// szPath.MakeUpper();
// pos = szPath.Find("TESTEXE.EXE");
// CString szExePath;
// szExePath = szPath.Left(pos);

// HINSTANCE hProtocol;
// hProtocol = LoadLibrary((LPCTSTR)(szExePath+FN_TESTDLL_DLL));



return 0;
}

这样依然不行,错误相同。

[Quote=引用 1 楼 的回复:]

#include <Windows.h>
即可。
[/Quote]
U华哥 2012-04-15
  • 打赏
  • 举报
回复
亲们,莫要让我玩论坛单机版好么?
Jim_King_2000 2012-04-15
  • 打赏
  • 举报
回复
#include <Windows.h>
即可。

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧