我正在将第三方代码(作为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
效果很好,我没有遇到任何崩溃。
有人有线索吗?谢谢!