阻止我的项目调用__CxxFrameHandler3(CRT函数)
Prevent my project from calling the __CxxFrameHandler3 (CRT function)
从现在起的几天里,我一直在处理一个none Visual C++Runtime Library项目,然而,我一直进展顺利,直到我的链接器开始抱怨__CxxFrameHandler3
CRT函数的未解析外部符号,因此,在搜索了产生这个错误的原因后,我发现从主入口点调用任何自定义类的方法都是在调用这个CRT函数,简单的例子:
// /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;
}
错误:
LNK2019 unresolved external symbol ___CxxFrameHandler3 referenced in function __unwindfunclet$?UmbraServerMain@@YGHPAUHINSTANCE__@@0PA_WH@Z$0
有没有办法阻止调用这个CRT函数?
将我的评论重新作为答案:
此函数与SEH(结构化异常处理(有关,因此要停止调用它,需要在项目中禁用异常(SEH和C++异常(。
该函数是VS异常处理基础设施的一部分。为了安全地避免使用CRT,您需要提供自己的(兼容的!(异常处理函数实现,或者在禁用异常的情况下编译,并严格避免任何可能引发异常的事情。(一个你明确没有做好准备的例外是等待发生的内存泄漏。(
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用不带参数的函数访问结构元素
- 阻止我的项目调用__CxxFrameHandler3(CRT函数)
- 在没有CRT,Memcpy和Memset固有函数的情况下链接误差
- 无论CRT版本如何,这都是在库中提供STL函数的有效方法吗
- VS2008|:任务管理器和CRT堆调试器函数之间的内存使用差异
- 如何避免CRT对话框与assert(.)函数