加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

从C静态库导出变量

发布时间:2020-12-16 10:15:10 所属栏目:百科 来源:网络整理
导读:我有一个用C编写的静态库,我有一个描述数据格式的结构,即 struct Format{ long fmtId; long dataChunkSize; long headerSize; Format(long,long,long); bool operator==(Format const other) const;}; 一些数据格式被广泛使用,如{fmtId = 0,dataChunkSize =
我有一个用C编写的静态库,我有一个描述数据格式的结构,即

struct Format{
    long fmtId;
    long dataChunkSize;
    long headerSize;

    Format(long,long,long);

    bool operator==(Format const & other) const;
};

一些数据格式被广泛使用,如{fmtId = 0,dataChunkSize = 128,headerSize = 0}和{fmtId = 0,dataChunkSize = 256,headerSize = 0}
一些数据结构类在构造函数中接收格式.我想为那些广泛使用的格式提供某种快捷方式,比如我可以通过引用传递的几个全局格式成员gFmt128,gFmt256.我在.cpp文件中实例化它们

格式化gFmt128(0,128,0);

而且.h有

extern格式gFmt128;

另外,我声明格式const& Format :: Fmt128(){return gFmt128;}并尝试在主模块中使用它.

但是如果我尝试在使用lib的主模块中执行此操作,则链接器会抱怨未解析的外部gFmt128.

如何让我的库’导出’那些全局变量,所以我可以从其他模块中使用它们?

解决方法

不要在全局声明中使用static关键字. Here is an article explain the visibility of variables with/without static.静态赋予全局变量内部链接,即只在声明它们的翻译单元中可见.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读