【发布时间】:2014-05-24 06:28:22
【问题描述】:
如果有人可以帮助我,我真的很感激。
我会详细说明情况。
我有两个项目的解决方案:
- 非托管 c++ 中的 win32 DLL 项目
- 用于测试 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
为清楚起见,我省略了其余代码,请告诉我必须提供的详细信息。
感谢您的帮助
【问题讨论】:
-
opencv 库与“多线程 dll”运行时库链接。您的项目必须使用相同的。
-
你的意思是我必须对两个项目都使用 /MD 吗?
-
可能。是的。此外,从 cv::Mat 继承是一个糟糕的设计理念。而是将其分层。 (上面调用 Mat 构造函数的方式不会做正确的事情)
-
我改变了你提到的设计,即 cv:mat 作为 CData_1D 中的对象。我还将两个项目都切换到/MD。问题还是一样。请另一个想法?
标签: c++ visual-studio-2010 opencv dll static-libraries