Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 生成OpenCV 64位DLL_C++_Opencv_C++ Cli - Fatal编程技术网

C++ 生成OpenCV 64位DLL

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

我在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\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或更高?