报错原因:
某文件内定义了全局变量,编译时候提示
“错误 1 error LNK2005: "char * gCommandMessage" (?gCommandMessage@@3PADA) 已经在 Server.obj 中定义 main.obj Framework”。说明:
经过检查编译日志gCommandMessage所在文件被编译了两次,一次在main.obj另一次在MyServer.obj中,而不是定义冲突的问题,另外Server.obj和所引用的文件头都加上了 #pragma once
===========================================编译日志========================================================
正在编译...
DatabaseServer.cpp
f:\collection\databaseserver\databaseframework\databaseframework\include\databaselib\MyServer.h(125) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.main.cpp
f:\collection\databaseserver\databaseframework\databaseframework\include\databaselib\MyServer.h(125) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.=============================================================================================================(注:错误与警告无关,警告是为了编译时候做标识加上的)望各位高手帮忙!!!
某文件内定义了全局变量,编译时候提示
“错误 1 error LNK2005: "char * gCommandMessage" (?gCommandMessage@@3PADA) 已经在 Server.obj 中定义 main.obj Framework”。说明:
经过检查编译日志gCommandMessage所在文件被编译了两次,一次在main.obj另一次在MyServer.obj中,而不是定义冲突的问题,另外Server.obj和所引用的文件头都加上了 #pragma once
===========================================编译日志========================================================
正在编译...
DatabaseServer.cpp
f:\collection\databaseserver\databaseframework\databaseframework\include\databaselib\MyServer.h(125) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.main.cpp
f:\collection\databaseserver\databaseframework\databaseframework\include\databaselib\MyServer.h(125) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.=============================================================================================================(注:错误与警告无关,警告是为了编译时候做标识加上的)望各位高手帮忙!!!
非常感谢你的解答,但是我的MyServer.h只被DatabaseServer.h包含过我非常在意的是问什么被包含了两次。
f:\collection\databaseserver\databaseframework\databaseframework\include\databaselib\MyServer.h(125) :
2》main.cpp
f:\collection\databaseserver\databaseframework\databaseframework\include\databaselib\MyServer.h(125) :
其实被包含几次并不重要,(往往是多次被包含)
关键是h文件中不能定义变量,只能声明变量(extern)。
能加你QQ么,有几个问题想请教一下
error C2440: “初始化”: 无法从“char *”转换为“int”
gCommandMessage=#NAME; \===============================================================================这是我的代码,我想将宏的里的NAME赋值给gCommandMessage这个全局变量。
char gCommandMessage[MAX_PATH];
#define REGISTER(NAME) (strcpy(gCommandMessage,NAME));
REGISTER("haha");