阻止我的项目调用__CxxFrameHandler3(CRT函数)

时间:2018-08-01 19:00:45

标签: c++ visual-studio msvcrt

从现在开始几天以来,我一直在进行无Visual C ++ Runtime Library项目,但是直到进入链接器开始抱怨{{1的未解决的外部符号}} CRT函数,因此,在查找产生此错误的原因之后,我发现从主入口点调用任何自定义类的方法都在调用此CRT函数,简单示例:

__CxxFrameHandler3

错误:

// /No Common Language RunTime Support
// /Ignore All Default Libraries 

class A
{
public:
    A();
    ~A();

    int do_something();
private:

};

int A::do_something()
{
    return 0;
}

int EntryPoint()
{
    A a;
    a.do_something(); // Calls the __CxxFrameHandler3 CRT function.

    return 0;
}

有没有办法阻止对此CRT函数的调用?

2 个答案:

答案 0 :(得分:3)

将我的评论重新发布为答案:

此功能与SEH(结构化异常处理)有关,因此要停止调用它,需要在项目中禁用异常(SEH和C ++异常)。

答案 1 :(得分:1)

该功能是VS异常处理基础结构的一部分。为了安全地避免使用CRT,您将需要提供自己的(兼容!)异常处理函数实现,或者在禁用了异常的情况下进行编译,并谨慎地避免任何可能引发异常的事件。 (您显然没有做好准备的一个例外是等待发生内存泄漏。)