gpt4 book ai didi

c++ - 如何在 DLL 中声明常量?

转载 作者:搜寻专家 更新时间:2023-10-31 02:18:26 24 4
gpt4 key购买 nike

我这辈子第一次接触创建库,现在我遇到了一个问题。

//lib.h
#ifdef DLL_EXPORT
#define DECLDIR __declspec(dllexport)
#else
#define DECLDIR __declspec(dllimport)
#endif
...
extern "C" {
DECLDIR const double MAX_CALC_DUR = 60;
DECLDIR int stoi(string input); // C++11 not available on the Code::Blocks version I'm given to work with
}

应用我从中学到的知识 tutorial ,我成功地构建了内部只有 stoi() 的库,并将其链接到其他项目以供使用。现在,我想添加一个常量,如上面的代码所示。但是,我收到以下错误:

external linkage required for symbol 'MAX_CALC_DUR' because of 'dllexport' attribute

研究让我想到了这个 question ,这表明问题可能与 MAX_CALC_DUR 本质上等同于静态有关。但是,我知道标准库中定义了常量,那么在 DLL 中定义常量的正确方法是什么?

最佳答案

您可以简单地省略 DECLDIR。由于 MAX_CALC_DUR 具有内部链接(因为它是 const),因此包含 header 的每个文件都将像往常一样获得自己的私有(private)拷贝,一切都会正常进行。

如果可以直接插入客户端代码,则无需从 DLL 导出某些内容。

关于c++ - 如何在 DLL 中声明常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34505759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com