stdafx.h 包含了 
#include "Global.h"
#include "externs.h"Global.h :
#pragma onceLPWSTR pSysDir = NULL;
LPWSTR pAppDir = NULL;
externs.h:
#pragma onceextern LPWSTR pSysDir;
extern LPWSTR pAppDir;连接的时候就出现了:
inject.obj : error LNK2005: "unsigned short * pSysDir" (?pSysDir@@3PAGA) 已经在 stdafx.obj 中定义
inject.obj : error LNK2005: "unsigned short * pAppDir" (?pAppDir@@3PAGA) 已经在 stdafx.obj 中定义

解决方案 »

  1.   

    #include "Global.h"
    #include "externs.h"这两句从stdafx中移开,需要的地方加人
      

  2.   

    extern LPWSTR pSysDir;
    extern LPWSTR pAppDir;
    一般是放到CPP或者C文件中的如果你就是要这样用,那得看看包含了Global.h头文件的地方也包含了externs.h,或者出现这两个包含的时候顺序是否是错了
      

  3.   

    LPWSTR pSysDir = NULL;
    LPWSTR pAppDir = NULL;
    这放到工程的其中一个CPP或者C文件中才对stdafx.h 包含了 #include "Global.h",而在多个CPP或者C文件中#include "stdafx.h",当然重定义了
      

  4.   

    但是我加了 pragma once 啊我也是看了网上说的全局变量的方法才这样使用的
      

  5.   

    顺序就是:
    stdafx.h 包含了 
    #include "Global.h"
    #include "externs.h"因为所有的cpp都有包含stdafx.h 所以没有必有每个cpp都包含 global.h 和 externs.h 吧
    另外我也加了 pragma once
      

  6.   

    那你就不要在头文件中定义
    extern LPWSTR pSysDir;
    extern LPWSTR pAppDir;
      

  7.   

    但是我加了 pragma once 啊我也是看了网上说的全局变量的方法才这样使用的#pragma once 只是避免在同一个CPP或者C文件中多次#include同一个头文件,不是说在一个CPP或者C文件中#include了,再在其它CPP或者C文件中#include就不起作用,因为每个CPP或者C文件都是单独编译的。加了extern的是声明,不是定义;同一个变量声明可以多次,定义只能一次
    extern LPWSTR pSysDir;extern LPWSTR pAppDir; 可以放到头文件
    LPWSTR pSysDir = NULL; LPWSTR pAppDir = NULL;不要放到头文件
      

  8.   


    #pragma once 只是避免在同一个CPP或者C文件中多次#include同一个头文件,不是说在一个CPP或者C文件中#include了,再在其它CPP或者C文件中#include就不起作用,因为每个CPP或者C文件都是单独编译的。加了extern的是声明,不是定义;同一个变量声明可以多次,定义只能一次
    extern LPWSTR pSysDir;extern LPWSTR pAppDir; 可以放到头文件
    LPWSTR pSysDir = NULL; LPWSTR pAppDir = NULL;不要放到头文件
    谢谢你。
    再问多一个问题就结贴。
    LPWSTR pSysDir = NULL; LPWSTR pAppDir = NULL;不要放到头文件,就是说放CPP里面
    如果别的CPP要用这个变量的话,应该怎么做呢?
    使用 extern 就可以了吗?
      

  9.   


    #pragma once 只是避免在同一个CPP或者C文件中多次#include同一个头文件,不是说在一个CPP或者C文件中#include了,再在其它CPP或者C文件中#include就不起作用,因为每个CPP或者C文件都是单独编译的。加了extern的是声明,不是定义;同一个变量声明可以多次,定义只能一次
    extern LPWSTR pSysDir;extern LPWSTR pAppDir; 可以放到头文件
    LPWSTR pSysDir = NULL; LPWSTR pAppDir = NULL;不要放到头文件
    谢谢你。
    再问多一个问题就结贴。
    LPWSTR pSysDir = NULL; LPWSTR pAppDir = NULL;不要放到头文件,就是说放CPP里面
    如果别的CPP要用这个变量的话,应该怎么做呢?
    使用 extern 就可以了吗?是的,全局变量使用 extern 声明就可以了