首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >人们如何处理编译为本机的警告C4793:'some_function‘:function?

人们如何处理编译为本机的警告C4793:'some_function‘:function?
EN

Stack Overflow用户
提问于 2010-05-07 06:09:22
回答 2查看 14.4K关注 0票数 23

如果我的C++项目是在支持OpenCV的情况下编译的,那么我将使用CLR库和它的一个头文件cxoperations.hpp生成"warning C4793: 'anonymous namespace'::CV_XADD' : function compiled as native"。我可以通过将OpenCV头包括在内来防止警告,如下所示:

代码语言:javascript
复制
#pragma managed(push,off)
#include <cv.h>
#pragma managed(pop)

但是实际使用OpenCV的项目并不是使用CLR支持编译的,它是一个原生的C++静态库。具有CLR支持并在不使用杂注语句的情况下生成此警告的项目只需使用此静态库。因此,我对创建警告感到有点惊讶,特别是考虑到整个静态库都不是使用CLR支持编译的,但只有这一个头文件导致了问题。

因此,对我来说,这个解决方案似乎不是最优的。这是您处理此警告的方式,还是您可以推荐一种更好的做法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-07 06:20:24

我想你想要的是:

代码语言:javascript
复制
#pragma unmanaged
#include <cv.h>
#pragma managed
// managed code wrapping unmanaged opencv functions

C++/CLI项目既可以包含托管部分,也可以包含非托管部分,编译器会为您处理这两者之间的数据编组。托管入口点将可从普通.NET应用程序(如C#和rest)调用,并将使用垃圾回收,它们将调用非托管函数来完成繁重的任务。

票数 19
EN

Stack Overflow用户

发布于 2015-03-13 00:26:38

我认为你应该抑制这个警告。MSDN文档明确指出,在include语句之前不应使用托管/非托管编译指示。

代码语言:javascript
复制
#pragma warning(push)
#pragma warning(disable: 4793) // methods are compiled as native (clr warning)
#include <cv.h>
#pragma warning(pop)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2784864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档