首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

syntax error : 'stdcall'解决方案

2013-03-29 
syntax error : '__stdcall'#ifdef __cplusplus#define DLL_API extern C __declspec (dllexp

syntax error : '__stdcall'
#ifdef __cplusplus
#define DLL_API extern "C" __declspec (dllexport)
#else
#define DLL_API __declspec (dllexport)
#endif

typedef NTSTATUS (NTAPI *NTALLOCATEVIRTUALMEMORY)(IN HANDLE ProcessHandle,
  IN OUT  PVOID *BaseAddress,
  IN     ULONG_PTR ZeroBits,
  IN OUT  PSIZE_T RegionSize,
  IN     ULONG AllocationType,
  IN     ULONG Protect
  );


DLL_API NTALLOCATEVIRTUALMEMORY NtAllocateVirtualMemoryOrig;



上面是写在C++的DLL文件里面


然后编译的时候出现如下错误:



error C2059: syntax error : '__stdcall'
error C2091: function returns function
error C2146: syntax error : missing ';'
 before identifier 'NtAllocateVirtualMemoryOrig'
fatal error C1004: unexpected end of file found



其它地方没错,就这里报错,好象是调用规则问题,但不知道要怎么写才不会出错,想请教一下论坛上谁写过这样的
[解决办法]
从提示信息来看是编译器不认识NTALLOCATEVIRTUALMEMORY。
你这句这样写是不是有什么问题啊:typedef NTSTATUS (NTAPI *NTALLOCATEVIRTUALMEMORY)(IN HANDLE ProcessHandle
[解决办法]
DLL_API NTALLOCATEVIRTUALMEMORY NtAllocateVirtualMemoryOrig;
====
你这句话写的啥意思,有这样写导出函数的???????
[解决办法]
你这句声明:
typedef NTSTATUS (NTAPI *NTALLOCATEVIRTUALMEMORY)(IN HANDLE ProcessHandle,
IN OUT PVOID *BaseAddress,
IN ULONG_PTR ZeroBits,
IN OUT PSIZE_T RegionSize,
IN ULONG AllocationType,
IN ULONG Protect
);

函数的返回类型NTSTATUS的定义是什么?这句:error C2091: function returns function,
函数返回了一个函数,我觉得还是你这句typedef有问题。
[解决办法]
你这代码不是完整代码吧?错误信息也似乎不全。感觉是其他地方导致错误的,看看最后一个错误尤其有此感觉

引用:
#ifdef __cplusplus
#define DLL_API extern "C" __declspec (dllexport)
#else
#define DLL_API __declspec (dllexport)
#endif

typedef NTSTATUS (NTAPI *NTALLOCATEVIRTUALMEMORY)(IN HANDLE ProcessHandl……

[解决办法]
这和C++也应该没有关系的,是你代码中使用这个头文件的方式有问题。但是由于你给的片断,没法判断
引用:
引用:
你这句声明:
typedef NTSTATUS (NTAPI *NTALLOCATEVIRTUALMEMORY)(IN HANDLE ProcessHandle,
IN OUT PVOID *BaseAddress,
IN ULONG_PTR ZeroBits,
IN OUT PSIZE_T RegionSize,
IN ULONG ……

热点排行