2014-05-24 63 views
0

如果有人能帮助我,我真的很感激它。native C++ - Visual Studio 2010和OpenCV上的DLL错误数据

我会详细解释情况。

我有两个项目的解决方案:

  1. 项目在非托管C的Win32 DLL ++
  2. 控制台应用程序项目来测试该DLL。

创建dll的项目1使用静态链接的OpenCV库。

它包含以下类:

class CData_1D: public cv::Mat // (dllexport/dllimport depending on the project) 
{ 
unsigned m_length; 

CData_1D(unsigned cn) 
{ 
m_length = cn; 

Mat(1, cn, DataType<double>::type); 
} 
} 

项目2 main()函数:

main() 
{ 
CData_1D TestUnit(10); 
cout << TestUnit.m_length; // 1124007936 

} 

它编译并无一例外运行,但数据是完全错误的 而m_length应是10,它总是1124007936

为了清晰的目的,我已经忽略了其余的代码,让我知道我必须给你的细节。

谢谢您的帮助

+0

opencv库链接到“multithreaded-dll”运行时库。你的项目将不得不使用相同的。 – berak

+0

你的意思是我必须在两个项目中使用/ MD?可能是 – Khaled

+0

。是。另外,从cv :: Mat继承是一个糟糕的设计理念。代替它。 (你称之为Mat构造函数的方式不会做正确的事情) – berak

回答

0

“本地C++”不存在,不同的编译器产生的代码不兼容APB http://en.wikipedia.org/wiki/Application_binary_interface,这意味着你不能链接到它。

这在我看来是C++的主要问题。要解决该问题,请使用相同的编译器重新编译OpenCV。

我不确定这是你的问题,但似乎很可能。