a/b/zy.cpp中定义的变量 char g_pstrDwgName[256];
该zy.cpp 没有对应的zy.h文件。
现想在a/c/zytest.cpp中使用变量g_pstrDwgName,该怎么办?

解决方案 »

  1.   

    以前有位大虾回答的,可是下面的情况是定义变量的cpp文件与要使用的cpp文件共在同一个目录下面。
    可是我的情况是不在同一个目录下面,并且定义变量的cpp文件没有对应的.h文件。谢谢!如何正确声明全局对象(Danny发表于2003-7-22 11:34:04) 通常我们都不太赞成使用全局变量,但有时确实也避免不了。每当使用全局变量或对象时,决不要在头文件中实例化,因为头文件一般都被包含(#include)在几个源文件中。这样,链接器将扫描到相同对象的多个实例并报错。必须在单个源文件中实例化全局变量或对象,只有这样才能保证它只被定义一次,而与工程中使用的源文件数目无关。所有其它的存取该全局对象的源文件和头必须以extern方式来声明。下面是一个例子:// File a.h
    /*仅仅声明; x 的定义在另外一个源文件中*/extern int x; struct Counter
    {
      Counter() {++x;}
      ~Counter() {--x;}
    };// File b.cpp
    int x; //定义全局变量// File main.cpp
    #include "a.h"
    int main()
    {
      Counter count;
      cout<<"value of x is: "<<x;
    }两个源文件 b.cpp 和 main.cpp 被单独编译。链接时,链接器确定所有定义在b.cpp文件中对x的引用。
      

  2.   

    在zytest.cpp中声明:
    extern cbar g_pstrDwgName[256];当然,连接的时候,链接器要能同时找到zy.obj和zytest.obj才行。