调用标准DLL的问题

uncarman 2002-12-18 03:40:36
我用VC显式调用一个标准DLL,出现一个编译错误,请高手帮忙解决

源码如下:
// VCTest.cpp : Defines the entry point for the console application.
//

#include "WinShellOper.h"

int main(int argc, char* argv[])
{
char c;
DWORD i;
BOOL res;

HINSTANCE hDll=LoadLibrary("WinShellOper.dll"); //显式调用WinShellOper.dll
if (hDll==NULL)
{
printf("load library fail \n");
}
else
{
printf("load library success \n");
pfDisableShell = (pfDisableShell)GetProcAddress(hDll,"disableShell");
if (pfDisableShell==NULL)
{
printf("load function \"disableShell\" fail\n");
FreeLibrary(hDll);
return 0;
}
else
{
res=pfDisableShell();
if (res!=NULL)
{
printf("execute function \"disableShell\" success\n");
printf("please input a letter to continue\n");
scanf("%c",&c);
}
else
{
printf("execute function \"disableShell\" fail\n");
FreeLibrary(hDll);
return 0;
}
}//if pfDisableShell

pfEnableShell=(pfEnableShell)GetProcAddress(hDll,"enableShell");
if (pfEnableShell==NULL)
{
printf("load function \"enableShell\" fail");
FreeLibrary(hDll);
return 0;
}
else
{
res=pfEnableShell();
if (res!=NULL)
{
printf("execute function \"enableShell\" success\n");
}
else
{
printf("execute function \"enableShell\" fail\n");
FreeLibrary(hDll);
return 0;
}
}//if pfEnableShell

printf("please input 0~4 to shutdown,reboot,logoff,force,poweroff your computer\n input 5 to exit");
scanf("%d",&i);
if (i==5)
{
FreeLibrary(hDll);
return 0;
}
pfDoShutDown2K=(pfDpShutDown2K)GetProcAddress(hDll,"doShutDown2K");
if (pfDoShutDown2K==NULL)
{
printf("load function \"doShutDown2K\" fail");
FreeLibrary(hDll);
return 0;
}
else
{
res=pfDoShutDown2K(i);
if (res!=NULL)
{
printf("execute function \"doShutDown2K\" success\n");
}
else
{
printf("execute function \"doShutDown2K\" fail\n");
FreeLibrary(hDll);
return 0;
}
}//if pfDoShutDown2K


} //if (hDll==NULL)

FreeLibrary(hDll);
return 1;
}


//WinShellOper.h

#include "StdAfx.h"


typedef __declspec(dllimport) BOOL (__stdcall *pfDisableShell)(void);

typedef __declspec(dllimport) BOOL (__stdcall *pfEnableShell)(void);

typedef __declspec(dllimport) BOOL (__stdcall *pfDoShutDown2K)(DWORD);

编译后出现错误信息
fatal error C1010: unexpected end of file while looking for precompiled header directive
...全文
21 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxiaobao 2002-12-25
  • 打赏
  • 举报
回复
工作区中选“files"->找到你的VCTest.cpp文件,在它上面右键,-》Settings...->c/c++,在category里选"Precomplied headers",选择下面的"Not Using Precomplied Headers"->OK.
功名半纸 2002-12-25
  • 打赏
  • 举报
回复
在头上加上
#include "stdafx.h"
chunbaoqi 2002-12-24
  • 打赏
  • 举报
回复
在头上加上
#include "stdafx.h"
uncarman 2002-12-19
  • 打赏
  • 举报
回复
试过,不行
功名半纸 2002-12-19
  • 打赏
  • 举报
回复
根据错误信息,可能指你的文件中的某处大括号少了一个!而且
typedef __declspec(dllimport) BOOL (__stdcall *pfDoShutDown2K)(DWORD);这个要改为
typedef BOOL (__stdcall *pfDoShutDown2K)(DWORD);
warmchang 2002-12-18
  • 打赏
  • 举报
回复
导出的时候加上exetern "C",使用用标准的C风格!
uncarman 2002-12-18
  • 打赏
  • 举报
回复
不好意思,从VC环境中粘贴的,好像我的VC编辑环境有问题,按Ctrl+X居然退出IDE了
kingcom_xu 2002-12-18
  • 打赏
  • 举报
回复
这么多重大括号。。。我晕!

三分!我就要你三分!!

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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