我使用 Visual Studio 2010 创建了一个 Windows 窗体项目,并从使用 OpenCV 的旧控制台项目移植了一些代码。我在编译时收到以下消息:
opencv\include\opencv\cxoperations.hpp(81): warning C4793: 'anonymous namespace'::CV_XADD' : function compiled as native :
经过一些挖掘,这似乎是 CLR 支持设置的问题。我看过一些讨论相同问题的帖子,但我在这里的问题会更笼统:
“native”和“clr”有什么关系?不同级别的 clr 支持有什么区别?我不认为我找到了一个页面可以在被一堆其他细节重载之前简明扼要地告诉我这个概念。
谢谢。
最佳答案
简答: 听起来您正在将项目编译为 C++/CLI。如果您想要普通的非托管 C++,请在 Visual Studio 中使用 C++“Win32 项目”模板,而不是“Windows 窗体应用程序”模板。
更长的答案: 一个 C++/CLI 程序可以包含两种类型:
- Native - 这些是普通的 C++ 类型。
- CLR - 这些是真正托管的 .NET 类型的特殊类型(“ref 类”)。
C++/CLI 的神奇之处在于您可以在一个程序中混合使用普通的 native C++ 类型和 .NET 类型。您可以从 native 类型调用 CLR 类型并返回,C++/CLI 会生成必要的互操作代码。
通常,如果您有现有的 .NET 代码和 native 代码并且需要让它们协同工作,您只会担心这个问题。如果没有这种情况,您只需使用普通的 native C++。
关于visual-studio - OpenCV 警告 : "function compiled as native",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9286895/