首页
社区
课程
招聘
如何解决问题c1xx : fatal error C1083: 无法打开源文件:“_DEBUG”: No such file or directory
发表于: 2012-10-26 09:01 34175

如何解决问题c1xx : fatal error C1083: 无法打开源文件:“_DEBUG”: No such file or directory

2012-10-26 09:01
34175
编译时出现:
1>_DEBUG
1>c1xx : fatal error C1083: 无法打开源文件:“_DEBUG”: No such file or directory

各位高手,这怎么解决啊??

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (19)
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
VS2008编译时出现的问题
2012-10-26 09:14
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
双击这个提示,会自动跳到出错位置,能解决就解决,不能解决再把那个位置的代码发上来
2012-10-26 11:12
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
双击不行,我把代码打了压缩包发上来,麻烦帮我看一下吧,谢谢!!

HookJmp_dll.zip
上传的附件:
2012-10-26 11:38
0
雪    币: 446
活跃值: (758)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
/nologo /MD /W3 /Gm /GX /ZI /Od /D "_AFXEXT" /D "_WINDLL" /Fp"Debug/HookJmp.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /D/md/ /GZ "_DEBUG" /c

最后多了一个 "_DEBUG"

改成
/nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /Fp"Debug/HookJmp.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
就好了
2012-10-26 12:36
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
你传的是VC6的工程,我这里用VC6直接可以编译
升级成08的工程,Debug版本出现你说的错误,解决办法,Debug版本的属性,C/C++分支下,最后有个命令行的选项,右边的附加选项/D/md/ "_DEBUG",整个删掉,同时还要把版本改成MFC共享DLL.
Release版本也是直接编译通过,就不说了
2012-10-26 13:23
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢!!果然是高手,按照你的方法,都成功了!!
2012-10-26 18:20
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢你的关注!
不过我没看懂,不知道从哪里改。
2012-10-26 18:27
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
你好,我还想请教一个问题,用这种方法能够HOOK到Wsock32.dll中的API函数吗,比如gethostbyname??
2012-10-26 19:43
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
这种是最常见的path函数头5字节方式,简单实用.但偶尔会出意外.所以不保证100%稳定.
至于能不能hook gethostbyname,你测试下不就知道了.我觉得应该可以的.

然后说下我有好感的两个hook库,一个是微软的detours,一个是老外的Mhook,后者完全开源,考虑的很周全,推荐学习研究.
2012-10-26 20:46
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
话说有回头看了下这代码,真的弱爆了.....
赶紧换方式吧,哈哈
2012-10-26 20:49
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
这个代码是Windows核心编程的随书源码,也比较早了,而且本人属于菜鸟级人物,只能从这里学起了。。
我试过了,没有HOOK成功。但我就是不确定是真的不行,还是我改的代码不行,所以来请教高手
在原来的基础上,把与MessageBoxA有关的都换成gethostbyname,改动的代码主要如下:
struct hostent* FAR My_gethostbyname( const char* name ) {
struct hostent* tmp = NULL;
myJmp.SetHookOff(); 
// 下面这段是想记录一下调用的时间
char   str[32];
CStdioFile file;
__time32_t nNow = 0;
    tm stNow = {0};
    _time32(&nNow);
    _localtime32_s(&stNow,&nNow);

    char buff[255] = {0};
    _snprintf(buff,sizeof(buff)-1,"%d.%d.%d.%d.%d.%d",
        stNow.tm_year + 1900,
        stNow.tm_mon + 1,
        stNow.tm_mday,
        stNow.tm_hour,
        stNow.tm_min,
        stNow.tm_sec);
ofstream outfile("e:\\gethostbyname.txt",ios::app);  //写入文件 

 for(int i=0;i<255;i++)  
  outfile<<buff[i];    
//上面这段是想记录一下调用的时间

tmp = gethostbyname(name) ;
myJmp.SetHookOn();
return tmp;
}

还有就是
void WINAPI ExampleJmp()
{
	myJmp.HookOneAPI("Wsock32.dll","gethostbyname",(FARPROC)My_gethostbyname);
	myJmp.SetHookOn();
}


把对应的这两个函数替换了之后,编译时出现了下述错误:
1>c:\documents and settings\administrator\桌面\vs\hookjmp_dll\hookjmp.cpp(24) : warning C4007: “DllMain”: 必须是“__stdcall”
1>c:\documents and settings\administrator\桌面\vs\hookjmp_dll\hookjmp.cpp(24) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

不是很明白,但在DllMain函数前面加了int之后,编译居然通过了。。
但我感觉测试的时候,并没有调用我自己写的gethostbyname,也没有记录调用的时间,不知道是什么情况。。。
2012-10-26 21:23
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
把Wsock32.dll换成Ws2_32.dll试试.
2012-10-26 21:33
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
换成Ws2_32.dll后,能够记录时间了,这应该是HOOK到了吧,但是出现了一个错误,截图如下:
上传的附件:
2012-10-26 21:48
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
刚才又试了下HOOK浏览器,结果浏览器提示出错,崩溃!!
2012-10-26 21:54
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
那样说明hook住了.至于什么原因出错,可能是函数类型不对,或者是数组越界(乱说的,反正是xx越界了)等.慢慢调吧,比如先别做记录日志这种多余动作,只简单的myJmp.SetHookOff();tmp = gethostbyname(name) ;myJmp.SetHookOn();
2012-10-26 21:59
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
把struct hostent* FAR My_gethostbyname( const char* name )改成
struct hostent* WINAPI My_gethostbyname( const char* name )看看
2012-10-26 22:04
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
我刚才也搜了一下,有说在函数前加WINAPI的,看到你的建议,我试了下,成功了,没有出现崩溃的情况。果然是高手啊!赞一个!!
2012-10-26 22:29
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
说下原因吧,因为2008编译时,如果不说明,它就用默认调用约定__cdecl,而你hook的函数是stdcall,所以得强制声明成stdcall,也就是WINAPI
2012-10-26 22:48
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
非常感谢!!!以后有问题可能还要麻烦你,还请多指教啊!
2012-10-26 23:25
0
游客
登录 | 注册 方可回帖
返回
//