(WINAPI
*VirtualFreeT)(
__in LPVOID lpAddress,
__in SIZE_T dwSize,
__in DWORD dwFreeType
);
static VirtualFreeT pVirtualFree=(VirtualFreeT)GetProcAddress(LoadLibrary("KERNEL32.dll"),"VirtualFreeT");
dongtai.h(21) : error C2099: initializer is not a constant
22 个解决方案
#1
C语言?
要求static VirtualFreeT pVirtualFree=(VirtualFreeT)GetProcAddress(LoadLibrary("KERNEL32.dll"),"VirtualFreeT");
右值是一个编译期常量
你可以先定义,在程序运行时赋值
例如
要求static VirtualFreeT pVirtualFree=(VirtualFreeT)GetProcAddress(LoadLibrary("KERNEL32.dll"),"VirtualFreeT");
右值是一个编译期常量
你可以先定义,在程序运行时赋值
例如
#include <windows.h>
typedef BOOL
(WINAPI
*VirtualFreeT)(
LPVOID lpAddress,
SIZE_T dwSize,
DWORD dwFreeType
);
static VirtualFreeT pVirtualFree = 0;
int main()
{
pVirtualFree=(VirtualFreeT)GetProcAddress(LoadLibrary("KERNEL32.dll"),"VirtualFreeT");
printf("Hello world!\n");
return 0;
}
#2
似乎不行啊 还是错误
#3
你参数怎么都不对应就进行强制转换啦?
#4
那应该怎么写呢?求指教
#5
为什么 还是提示错误呢 呜呜 求大神指教啊
#6
#include <stdio.h>
#include <windows.h>
typedef BOOL
(WINAPI
*VirtualFreeT)(
LPVOID lpAddress,
SIZE_T dwSize,
DWORD dwFreeType
);
static VirtualFreeT pVirtualFree = 0;
int main()
{
pVirtualFree=(VirtualFreeT)GetProcAddress(LoadLibrary("KERNEL32.dll"),"VirtualFreeT");
printf("Hello world!\n");
return 0;
}
我自己编译过了没有错误,你提示的是什么错误?
#7
我是直接放到里面使用的
#8
你如果要在MemoryModule中使用pVirtualFree的话应该去掉前面的static
加上static表面这个变量仅在当前文件使用,所以链接错误
加上static表面这个变量仅在当前文件使用,所以链接错误
#9
你如果要在MemoryModule中使用pVirtualFree的话应该去掉前面的static
加上static表面这个变量仅在当前文件使用,所以链接错误
还是不行啊
#10
你如果要在MemoryModule中使用pVirtualFree的话应该去掉前面的static
加上static表面这个变量仅在当前文件使用,所以链接错误
还是不行啊
你那个函数没有实现,或者你没有链接进来。
#11
你如果要在MemoryModule中使用pVirtualFree的话应该去掉前面的static
加上static表面这个变量仅在当前文件使用,所以链接错误
还是不行啊
你那个函数没有实现,或者你没有链接进来。
说错了 = = 。不好意思。
我这里编译没有问题,VS2008
#12
目测是你C文件的问题,你尝试在你需要在C文件里面使用的函数(在C++中声明)前加上extern “C"。
#13
你如果要在MemoryModule中使用pVirtualFree的话应该去掉前面的static
加上static表面这个变量仅在当前文件使用,所以链接错误
还是不行啊
你那个函数没有实现,或者你没有链接进来。
说错了 = = 。不好意思。
我这里编译没有问题,VS2008
我的是VC++6.0的
#14
目测是你C文件的问题,你尝试在你需要在C文件里面使用的函数(在C++中声明)前加上extern “C"。
需要声明头文件吗?
还是代码保持这样 然后加上extern “C" 就可以了?
#15
#ifndef _cplusplus
extern "C" {
#else
#ifndef _cplusplus
}
#endif
#endif
这样子试试吧
extern "C" {
#else
#ifndef _cplusplus
}
#endif
#endif
这样子试试吧
#16
#else
#ifndef _cplusplus
这之间是你的原本的代码
#ifndef _cplusplus
这之间是你的原本的代码
#17
#ifndef _cplusplus
extern "C" {
#else
#ifndef _cplusplus
}
#endif
#endif
这样子试试吧
恩恩 我一会去试试
#18
#else
#ifndef _cplusplus
这之间是你的原本的代码
谢谢大神
#19
#else
#ifndef _cplusplus
这之间是你的原本的代码
还是不行啊
#20
#else
#ifndef _cplusplus
这之间是你的原本的代码
还是不行啊
那我也无能为力了,我也是新手。
#21
不如你直接把.c文件改为.CPP试试
#22
不如你直接把.c文件改为.CPP试试
你的意思是 直接MemoryModule.c 变成 MemoryModule.cpp ?
#1
C语言?
要求static VirtualFreeT pVirtualFree=(VirtualFreeT)GetProcAddress(LoadLibrary("KERNEL32.dll"),"VirtualFreeT");
右值是一个编译期常量
你可以先定义,在程序运行时赋值
例如
要求static VirtualFreeT pVirtualFree=(VirtualFreeT)GetProcAddress(LoadLibrary("KERNEL32.dll"),"VirtualFreeT");
右值是一个编译期常量
你可以先定义,在程序运行时赋值
例如
#include <windows.h>
typedef BOOL
(WINAPI
*VirtualFreeT)(
LPVOID lpAddress,
SIZE_T dwSize,
DWORD dwFreeType
);
static VirtualFreeT pVirtualFree = 0;
int main()
{
pVirtualFree=(VirtualFreeT)GetProcAddress(LoadLibrary("KERNEL32.dll"),"VirtualFreeT");
printf("Hello world!\n");
return 0;
}
#2
似乎不行啊 还是错误
#3
你参数怎么都不对应就进行强制转换啦?
#4
你参数怎么都不对应就进行强制转换啦?
那应该怎么写呢?求指教
#5
C语言?
要求static VirtualFreeT pVirtualFree=(VirtualFreeT)GetProcAddress(LoadLibrary("KERNEL32.dll"),"VirtualFreeT");
右值是一个编译期常量
你可以先定义,在程序运行时赋值
例如
#include <windows.h>
typedef BOOL
(WINAPI
*VirtualFreeT)(
LPVOID lpAddress,
SIZE_T dwSize,
DWORD dwFreeType
);
static VirtualFreeT pVirtualFree = 0;
int main()
{
pVirtualFree=(VirtualFreeT)GetProcAddress(LoadLibrary("KERNEL32.dll"),"VirtualFreeT");
printf("Hello world!\n");
return 0;
}
为什么 还是提示错误呢 呜呜 求大神指教啊
#6
为什么 还是提示错误呢 呜呜 求大神指教啊
#include <stdio.h>
#include <windows.h>
typedef BOOL
(WINAPI
*VirtualFreeT)(
LPVOID lpAddress,
SIZE_T dwSize,
DWORD dwFreeType
);
static VirtualFreeT pVirtualFree = 0;
int main()
{
pVirtualFree=(VirtualFreeT)GetProcAddress(LoadLibrary("KERNEL32.dll"),"VirtualFreeT");
printf("Hello world!\n");
return 0;
}
我自己编译过了没有错误,你提示的是什么错误?
#7
为什么 还是提示错误呢 呜呜 求大神指教啊
#include <stdio.h>
#include <windows.h>
typedef BOOL
(WINAPI
*VirtualFreeT)(
LPVOID lpAddress,
SIZE_T dwSize,
DWORD dwFreeType
);
static VirtualFreeT pVirtualFree = 0;
int main()
{
pVirtualFree=(VirtualFreeT)GetProcAddress(LoadLibrary("KERNEL32.dll"),"VirtualFreeT");
printf("Hello world!\n");
return 0;
}
我自己编译过了没有错误,你提示的是什么错误?
我是直接放到里面使用的
#8
你如果要在MemoryModule中使用pVirtualFree的话应该去掉前面的static
加上static表面这个变量仅在当前文件使用,所以链接错误
加上static表面这个变量仅在当前文件使用,所以链接错误
#9
你如果要在MemoryModule中使用pVirtualFree的话应该去掉前面的static
加上static表面这个变量仅在当前文件使用,所以链接错误
还是不行啊
#10
你如果要在MemoryModule中使用pVirtualFree的话应该去掉前面的static
加上static表面这个变量仅在当前文件使用,所以链接错误
还是不行啊
你那个函数没有实现,或者你没有链接进来。
#11
你如果要在MemoryModule中使用pVirtualFree的话应该去掉前面的static
加上static表面这个变量仅在当前文件使用,所以链接错误
还是不行啊
你那个函数没有实现,或者你没有链接进来。
说错了 = = 。不好意思。
我这里编译没有问题,VS2008
#12
目测是你C文件的问题,你尝试在你需要在C文件里面使用的函数(在C++中声明)前加上extern “C"。
#13
你如果要在MemoryModule中使用pVirtualFree的话应该去掉前面的static
加上static表面这个变量仅在当前文件使用,所以链接错误
还是不行啊
你那个函数没有实现,或者你没有链接进来。
说错了 = = 。不好意思。
我这里编译没有问题,VS2008
我的是VC++6.0的
#14
目测是你C文件的问题,你尝试在你需要在C文件里面使用的函数(在C++中声明)前加上extern “C"。
需要声明头文件吗?
还是代码保持这样 然后加上extern “C" 就可以了?
#15
#ifndef _cplusplus
extern "C" {
#else
#ifndef _cplusplus
}
#endif
#endif
这样子试试吧
extern "C" {
#else
#ifndef _cplusplus
}
#endif
#endif
这样子试试吧
#16
#else
#ifndef _cplusplus
这之间是你的原本的代码
#ifndef _cplusplus
这之间是你的原本的代码
#17
#ifndef _cplusplus
extern "C" {
#else
#ifndef _cplusplus
}
#endif
#endif
这样子试试吧
恩恩 我一会去试试
#18
#else
#ifndef _cplusplus
这之间是你的原本的代码
谢谢大神
#19
#else
#ifndef _cplusplus
这之间是你的原本的代码
还是不行啊
#20
#else
#ifndef _cplusplus
这之间是你的原本的代码
还是不行啊
那我也无能为力了,我也是新手。
#21
不如你直接把.c文件改为.CPP试试
#22
不如你直接把.c文件改为.CPP试试
你的意思是 直接MemoryModule.c 变成 MemoryModule.cpp ?