template<class Real>
class MatrixBase {
...
template<typename OtherReal>
void CopyFromSp(const SpMatrix<OtherReal> &M);
...
}
///////////////////////////////////////////////////////////////////////
//MatrixBase.cpp
template<typename Real>
template<typename OtherReal>
void MatrixBase<Real>::CopyFromSp(const SpMatrix<OtherReal> & M) {...}
template
void MatrixBase<float>::CopyFromSp(const SpMatrix<float> & M);
template
void MatrixBase<float>::CopyFromSp(const SpMatrix<double> & M);
template
void MatrixBase<double>::CopyFromSp(const SpMatrix<float> & M);
template
void MatrixBase<double>::CopyFromSp(const SpMatrix<double> & M);
//////////////////////////////////////////////////////////////////////
编译后,描红的两行报错:
error C3416: “kaldi::MatrixBase<Real>::CopyFromSp”: 显式专用化可能无法显式实例化
with
[
Real=float
]
error C3416: “kaldi::MatrixBase<Real>::CopyFromSp”: 显式专用化可能无法显式实例化
with
[
Real=double
]
不知道为什么出错,请各位大神指教!
11 个解决方案
#1
你写这一坨想干嘛?
#2
这是一个开源的工具包,编译的时候出错了
#3
那你可能不得不改用此工具包当初使用的编译器了
模板的可移植性是很差的。
模板的可移植性是很差的。
#4
这个工具包是在linux下开发的,但是提供了windows下VS2010的工程文件。
这个错误能改吗?
#5
1. 2010打个sp1试试
2. 如果还不行,给这个开源的开发和维护人员发邮件问问
3. 如果还不行,最好放弃,或者把上面两个函数删了,试试能不能编
#6
linux下如果用gcc的话,windows下可用mingw
#7
好,谢谢大神,我先试试
#8
这个工具包可以在WINDOWS下用cygwin编译的,不过我不想这样,我想在这个工具包的基础上改进一下算法,所以准备先调通VS2010工程
#9
在你对模板掌握度比较低的情况下,最好别折腾。
你很容易造成可以编译,但是调用的不是应该的函数。
你很容易造成可以编译,但是调用的不是应该的函数。
#10
确实是这种情况,我刚开始注释掉那几行,这个子项目编译通过了,但是在另一个项目里调用这个lib库的时候就无法解析相应的函数了
#11
kaldi,还是换linux吧
#1
你写这一坨想干嘛?
#2
这是一个开源的工具包,编译的时候出错了
#3
那你可能不得不改用此工具包当初使用的编译器了
模板的可移植性是很差的。
模板的可移植性是很差的。
#4
这个工具包是在linux下开发的,但是提供了windows下VS2010的工程文件。
这个错误能改吗?
#5
1. 2010打个sp1试试
2. 如果还不行,给这个开源的开发和维护人员发邮件问问
3. 如果还不行,最好放弃,或者把上面两个函数删了,试试能不能编
#6
linux下如果用gcc的话,windows下可用mingw
#7
好,谢谢大神,我先试试
#8
这个工具包可以在WINDOWS下用cygwin编译的,不过我不想这样,我想在这个工具包的基础上改进一下算法,所以准备先调通VS2010工程
#9
在你对模板掌握度比较低的情况下,最好别折腾。
你很容易造成可以编译,但是调用的不是应该的函数。
你很容易造成可以编译,但是调用的不是应该的函数。
#10
确实是这种情况,我刚开始注释掉那几行,这个子项目编译通过了,但是在另一个项目里调用这个lib库的时候就无法解析相应的函数了
#11
kaldi,还是换linux吧