0

我在 .h 文件中有一个函数模板,它包含在我的主文件中,用于创建 Excel 图表。如果我将模板函数编写为非模板方法,那么一切都很好。当我将函数设为函数模板时,函数模板中对 Excel 命名空间中的方法的调用会出现许多未解决的外部符号错误。顺便说一下,这一切都在 Visual Studio 2010 中。

例如,如果在 myFunc.h 我有

template<class T> 
void ExcelGraph(const std::vector<T>& xData){
//Calls to the various methods in the Excel namespace
}

并在 main.cpp

 #include"myFunc.h"

 int main(){
 std::vector<float> xData(100,1);
 ExcelGraph(xData);
 }

那么代码将生成链接器错误。如果 myFunc.h 看起来像这样:

void ExcelGraph(const std::vector<float>& xData){
//Calls to the various methods in the Excel namespace
}

并在 main.cpp

 #include"myFunc.h"

 int main(){
 std::vector<float> xData(100,1);
 ExcelGraph(xData);
 }

然后代码编译并运行得很好。

有太多链接器错误要发布,但它们都是形式

1>Excel_Interface_Test.obj : error LNK2019: unresolved external symbol "public: void __thiscall Excel::_Chart::PutName(class _bstr_t)" (?PutName@_Chart@Excel@@QAEXV_bstr_t@@@Z) referenced in function "void __cdecl ExcelPlotting::ExcelGraph<float>(class std::vector<float,class std::allocator<float> > const &,class std::vector<float,class std::allocator<float> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??$ExcelGraph@M@ExcelPlotting@@YAXABV?$vector@MV?$allocator@M@std@@@std@@V12@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@22@Z)

4

0 回答 0