gpt4 book ai didi

c++ - 从 DLL 导出常量

转载 作者:行者123 更新时间:2023-11-30 02:10:34 25 4
gpt4 key购买 nike

我在 Windows 上使用 VC9。

我有一个库(我们称它为 libfoo),它由以下文件组成(为清楚起见,省略了“include guards”和“#include”指令):

// foo.hpp

class Foo
{
public:
static const std::string SOME_CONST;
};

和:

// foo.cpp

#include "foo.hpp"

const std::string Foo::SOME_CONST = "hello";

Foo::SOME_CONST 使用 .def 文件导出。

库编译良好:生成了一个 libfoo.lib 文件和一个 libfoo.dll 文件。

我在示例程序中使用了这个库,例如:

// main.cpp

#include <foo.hpp>

int main()
{
std::cout << Foo::SOME_CONST << std::endl; // std::bad_alloc here

return EXIT_SUCCESS;
}

每当我尝试使用 Foo::SOME_CONST 时,就会抛出 std::bad_alloc

只有当我动态链接到libfoo时才会发生这种情况。 静态链接会产生完美运行的程序。

这里可能发生了什么?以这种方式导出 std::string 常量是否合法?

最佳答案

检查dll是否真的进行了动态初始化,因为它可能不会,标准对动态库没有要求。在静态函数中包装全局变量可能是解决方案。

关于c++ - 从 DLL 导出常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4470802/

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