从静态lib启动类的对象时崩溃

时间:2017-02-25 23:08:00

标签: c++ crash static-libraries static-linking

我正在将第三方代码(作为VS解决方案提供)编译为静态库。这段代码有一个类,为简化起见,如下所示:

Sample.h:

class Sample
{
 public:
    Sample();
    ~Sample();
    void Foo();
 private:
    // some private members.
};

sample.cpp的:

Sample::Sample()
{
}
Sample::~Sample()
{
}
void Sample::Foo()
{
    //Do something...
}

此类编译为静态库Sample.lib

现在在我的主程序中,我想启动Sample的对象:

MYFILE.CPP:

#include "Sample.h"
//some code.
Sample* sample = new Sample();
//some code

并且当程序继续时某些点我正在崩溃。它崩溃的地方并不一致:

Unhandled exception at 0x770A0BFE (ntdll.dll) in MyApplication.exe: 0xC0000005: Access violation reading location 0xFFFFFFF8.

但是当我将Sample类放在一个包装类中时(在静态lib的相同解决方案中): Wrapper.cpp:

class Wrapper
{
public:
    Wrapper()
    {
        _sample = new Sample();
    }
    ~Wrapper()
    {
        delete sample;
    }
    void Foo()
    {
       _sample->Foo();
    }
private:
    Sample* _sample;
}

然后在我的程序中初始化Wrapper类:

MYFILE.CPP:

#include Sample.h
//some code.
Wrapper* wrapper = new Wrapper();
//some code

效果很好,我没有遇到任何崩溃。

有人有线索吗?谢谢!

0 个答案:

没有答案