【问题标题】:New class member of static library missing after compilation编译后缺少静态库的新类成员
【发布时间】:2011-03-24 08:16:39
【问题描述】:

早安,

我面临一个非常奇怪的问题,我还没有找到解决方案。 我希望有人能给我一个clou。

我正在将一个类编译为静态库。 我在一个简单的控制台程序中使用这个类来对该类执行测试。

在我向该类添加一个新的数据成员 (std::string) 之前,该类就像一个魅力一样工作。 即使我不使用该字符串,当调用类的 dtor 时也会出现奇怪的错误(当字符串没有值时访问冲突或当字符串初始化时出现缓冲区溢出)。

调试类显示新的 std::string 不存在,但旧成员存在。

我什至尝试在 ctor (strLPath.str("Appletree")) 中初始化该字符串并在 dtor 之前将其输出。 字符串的输出显示类似于“Ap tre”。

当我删除那个新字符串时,一切又好了。

有人可以帮帮我吗?

感谢您提前提供任何答案。

菲尔

【问题讨论】:

  • 您确定您进行了完整、干净的重建吗?你能显示相关代码吗?你能用一个小例子重现错误吗?
  • 请发布缩小的源代码示例。比起一堆文字,看源代码能更好地帮助你。
  • 我认为源代码在这里不会很有用。正如 Space_C0wb0y 所暗示的,这听起来像是部分构建问题。部分程序仍在使用旧的类定义。从头开始重建一切,然后重试。
  • @Space_C0wb0y 是的,我试过了(在 lib 和调用程序中都是 ctrl+alt+f7)
  • @Phil:我在msdn.microsoft.com/en-us/library/da5kh0wa.aspx 的 Microsoft 键盘快捷键中找不到 ctrl+alt+f7。这是什么意思?你确定它的意思是你认为的吗?

标签: c++ visual-studio class static


【解决方案1】:

感谢所有花时间思考我的问题的人。

无论如何-我昨晚解决了。

当我创建测试程序时,我似乎是个懒惰的傻瓜。

我没有包含原始标题,而是将其复制到测试项目中。

不知道那天晚上发生了什么。

抱歉浪费了您的时间!

问候, 菲尔

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 2016-10-29
    • 2016-11-28
    • 2011-05-20
    相关资源
    最近更新 更多