报错原因:
    某文件内定义了全局变量,编译时候提示
“错误 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.   

    把函数的实现部分拿到.cpp文件中。
      

  2.   

    MyServer.h 的实现部分是在.cpp中的
      

  3.   

    char * gCommandMessage是变量定义,.h被包含2次,产生了2个char * gCommandMessage,把它移到cpp中。
      

  4.   

    to:schlafenhamster
    非常感谢你的解答,但是我的MyServer.h只被DatabaseServer.h包含过我非常在意的是问什么被包含了两次。
      

  5.   

    1》DatabaseServer.cpp
    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)。
      

  6.   

    to:schlafenhamster
    能加你QQ么,有几个问题想请教一下
      

  7.   

    我定义在gCommandMessage是字符串数组,但是赋值的时候编译器提示
    error C2440: “初始化”: 无法从“char *”转换为“int”
      

  8.   

    char *gCommandMessage;是指针?
      

  9.   

    extern char gCommandMessage[256];#define REGISTER(NAME)\
    gCommandMessage=#NAME; \===============================================================================这是我的代码,我想将宏的里的NAME赋值给gCommandMessage这个全局变量。
      

  10.   

    是不是:
    char gCommandMessage[MAX_PATH];
    #define REGISTER(NAME) (strcpy(gCommandMessage,NAME));
    REGISTER("haha");