C++ 生成OpenCV 64位DLL
我在Viusal Studio 2010中使用c++/cli/OpenCV成功编译了一个32位DLL。 我正在尝试创建一个64位DLL。当我将构建配置更改为x64并编译它时,它会C++ 生成OpenCV 64位DLL,c++,opencv,c++-cli,C++,Opencv,C++ Cli,我在Viusal Studio 2010中使用c++/cli/OpenCV成功编译了一个32位DLL。 我正在尝试创建一个64位DLL。当我将构建配置更改为x64并编译它时,它会 c:\opencv2.2\include\opencv2\core\mat.hpp(379): fatal error C1001: An internal error has occurred in the compiler. (compiler file \ 'f:\dd\vctools\compil
c:\opencv2.2\include\opencv2\core\mat.hpp(379): fatal error C1001: An internal error has
occurred in the compiler. (compiler file \
'f:\dd\vctools\compiler\utc\src\p2\wvm\mdmiscw.c', line 2704)
有什么建议吗
更新:
事实证明,c++-cli在opencv 64位上存在一些错误。我加了这个
#pragma managed(push, off)
#include <opencv/cv.h>
#pragma managed(pop)
#pragma managed(push, off)
#include <opencv/cv.h>
#pragma managed(pop)
#pragma管理(推、关)
#包括
#布拉格语管理(pop)
这就解决了它事实证明c++-cli在opencv 64位上有一些缺陷。我加了这个
#pragma managed(push, off)
#include <opencv/cv.h>
#pragma managed(pop)
#pragma managed(push, off)
#include <opencv/cv.h>
#pragma managed(pop)
#pragma管理(推、关)
#包括
#布拉格语管理(pop)
使用ICE可以做的唯一一件事是。我想知道mat.hpp第379行包含什么,尽管它不是您的代码。这是第379行inline void mat::release(){if(refcount&&cvxadd(refcount,-1)=1)deallocate();data=datastart=dataend=datalimit=0;size.p[0]=0;refcount=0;}我能想到的唯一一件事是确保将您的#include
语句包含在#pragma managed(off)
中,但由于它编译为32位,可能不是这样。opencv 2.2是一个非常古老的版本。可能有很多代码是在假设的情况下编写的,这些代码可能对64位编译无效。你考虑搬到最新版本了吗?2.4或更高?