读书人

syntax error : amp;#x27;stdcallamp;#x27;解

发布时间: 2013-03-29 14:24:52 作者: rapoo

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 ……

读书人网 >C++

热点推荐