T
The Original Pat
Guest
Linking a .obj file, created from a '.ccp' file containing the following function definition, gives 'error LNK2001: unresolved external symbol' if the function prototype exceeds [ around ] 1064 Characters, eg :
void Iblablablablablablal::ReadFlow(const std::string& flowName,
std::vector<FlowBase >& flowBase,
std::vector<ConData >& conData,
std::vector<CompData >& compData,
std::vector<ConAct >& conAct,
FlowSchema& flowSchema,
std::vector<ExitPoint >& exitPoint,
blablabla::bla::common::blaResponseDetail& responseDetail)
{
//Some irrelevant code here
}
[ 1063 Characters ] compiles and links successfully
Whereas :
void Iblablablablablablal::ReadFlow(const std::string& flow_Longer_variable_Name_Name,
std::vector<Flow_Longer_method_name_Base >& flow_Longer_variable_Name_Base,
std::vector<Con_Longer_method_name_Data >& con_Longer_variable_Name_Data,
std::vector<Comp_Longer_method_name_Data >& comp_Longer_variable_Name_Data,
std::vector<Con_Longer_method_name_Act >& con_Longer_variable_Name_Act,
Flow_Longer_method_name_Schema& flow_Longer_variable_Name_Schema,
std::vector<Exit_Longer_method_name_Point >& exit_Longer_variable_Name_Point,
blablabla::bla::common::blaResponseDetail& response_Longer_variable_Name_Detail)
{
//Some irrelevant code here
}
[ 1154 bytes ] gives :
error LNK2001: unresolved external symbol
"public: virtual void __cdecl blablabla::bla::A_higher_Class::Iblablablablablablal::ReadFlow(
class std::basic_string<char, struct std::char_traits<char>, class std::allocator<char> >
const &,
class std::vector<class blablabla::bla::A_higher_Class_name::Flow_Longer_method_name_Base, class std::allocator<class blablabla::bla::A_higher_Class_name::Flow_Longer_method_name_Base> > &,
class std::vector<class blablabla::bla::A_higher_Class_name::Con_Longer_method_name_Data, class std::allocator<class blablabla::bla::A_higher_Class_name::Con_Longer_method_name_Data> > &,
class std::vector<class blablabla::bla::A_higher_Class_name::Comp_Longer_method_name_Data,class std::allocator<class blablabla::bla::A_higher_Class_name::Comp_Longer_method_name_Data > > &,
class std::vector<class blablabla::bla::A_higher_Class_name::Con_Longer_method_name_Act,class std::allocator<class blablabla::bla::A_higher_Class_name::Con_Longer_method_name_Act> > &,
class blablabla::bla::A_higher_Class_name::Flow_Longer_method_name_Schema &,
class std::vector<class blablabla::bla::A_higher_Class_name::ExitPoint,class std::allocator<class blablabla::bla::A_higher_Class_name::ExitPoint> > &,
class ?? ::blaResp &,
?? )
throw( ?? )"
(?ReadFlow@Iblablablablablablal@A_higher_Class_name@bla@blablabla@@UEAAXAEBV?
$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAV?
$vector@VFlow_Longer_method_name_Base@A_higher_Class_name@bla@blablabla@@V?$allocator@VFlow_Longer_method_name_Base@A_higher_Class_name@bla@blablabla@@@std@@@6@AEAV?
$vector@VCon_Longer_method_name_Data@A_higher_Class_name@bla@blablabla@@V?$allocator@VCon_Longer_method_name_Data@A_higher_Class_name@bla@blablabla@@@std@@@6@AEAV?
$vector@VComp_Longer_method_name_Data@A_higher_Class_name@bla@blablabla@@V?$allocator@VComp_Longer_method_name_Data@A_higher_Class_name@bla@blablabla@@@std@@@6@AEAV?
$vector@VCon_Longer_method_name_Act@A_higher_Class_name@bla@blablabla@@V?$allocator@VCon_Longer_method_name_Act@A_higher_Class_name@bla@blablabla@@@std@@@6@AEAVFlow_Longer_method_name_Schema@234@AEAV?
$vector@VExitPoint@A_higher_Class_name@bla@blablabla@@V?$allocator@VExitPoint@A_higher_Class_name@bla@blablabla@@@std@@@6@AEAVblaResp)
Using 'cl.exe' from Visual Studio 2010 on 64 bit Windows 10
Continue reading...
void Iblablablablablablal::ReadFlow(const std::string& flowName,
std::vector<FlowBase >& flowBase,
std::vector<ConData >& conData,
std::vector<CompData >& compData,
std::vector<ConAct >& conAct,
FlowSchema& flowSchema,
std::vector<ExitPoint >& exitPoint,
blablabla::bla::common::blaResponseDetail& responseDetail)
{
//Some irrelevant code here
}
[ 1063 Characters ] compiles and links successfully
Whereas :
void Iblablablablablablal::ReadFlow(const std::string& flow_Longer_variable_Name_Name,
std::vector<Flow_Longer_method_name_Base >& flow_Longer_variable_Name_Base,
std::vector<Con_Longer_method_name_Data >& con_Longer_variable_Name_Data,
std::vector<Comp_Longer_method_name_Data >& comp_Longer_variable_Name_Data,
std::vector<Con_Longer_method_name_Act >& con_Longer_variable_Name_Act,
Flow_Longer_method_name_Schema& flow_Longer_variable_Name_Schema,
std::vector<Exit_Longer_method_name_Point >& exit_Longer_variable_Name_Point,
blablabla::bla::common::blaResponseDetail& response_Longer_variable_Name_Detail)
{
//Some irrelevant code here
}
[ 1154 bytes ] gives :
error LNK2001: unresolved external symbol
"public: virtual void __cdecl blablabla::bla::A_higher_Class::Iblablablablablablal::ReadFlow(
class std::basic_string<char, struct std::char_traits<char>, class std::allocator<char> >
const &,
class std::vector<class blablabla::bla::A_higher_Class_name::Flow_Longer_method_name_Base, class std::allocator<class blablabla::bla::A_higher_Class_name::Flow_Longer_method_name_Base> > &,
class std::vector<class blablabla::bla::A_higher_Class_name::Con_Longer_method_name_Data, class std::allocator<class blablabla::bla::A_higher_Class_name::Con_Longer_method_name_Data> > &,
class std::vector<class blablabla::bla::A_higher_Class_name::Comp_Longer_method_name_Data,class std::allocator<class blablabla::bla::A_higher_Class_name::Comp_Longer_method_name_Data > > &,
class std::vector<class blablabla::bla::A_higher_Class_name::Con_Longer_method_name_Act,class std::allocator<class blablabla::bla::A_higher_Class_name::Con_Longer_method_name_Act> > &,
class blablabla::bla::A_higher_Class_name::Flow_Longer_method_name_Schema &,
class std::vector<class blablabla::bla::A_higher_Class_name::ExitPoint,class std::allocator<class blablabla::bla::A_higher_Class_name::ExitPoint> > &,
class ?? ::blaResp &,
?? )
throw( ?? )"
(?ReadFlow@Iblablablablablablal@A_higher_Class_name@bla@blablabla@@UEAAXAEBV?
$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAV?
$vector@VFlow_Longer_method_name_Base@A_higher_Class_name@bla@blablabla@@V?$allocator@VFlow_Longer_method_name_Base@A_higher_Class_name@bla@blablabla@@@std@@@6@AEAV?
$vector@VCon_Longer_method_name_Data@A_higher_Class_name@bla@blablabla@@V?$allocator@VCon_Longer_method_name_Data@A_higher_Class_name@bla@blablabla@@@std@@@6@AEAV?
$vector@VComp_Longer_method_name_Data@A_higher_Class_name@bla@blablabla@@V?$allocator@VComp_Longer_method_name_Data@A_higher_Class_name@bla@blablabla@@@std@@@6@AEAV?
$vector@VCon_Longer_method_name_Act@A_higher_Class_name@bla@blablabla@@V?$allocator@VCon_Longer_method_name_Act@A_higher_Class_name@bla@blablabla@@@std@@@6@AEAVFlow_Longer_method_name_Schema@234@AEAV?
$vector@VExitPoint@A_higher_Class_name@bla@blablabla@@V?$allocator@VExitPoint@A_higher_Class_name@bla@blablabla@@@std@@@6@AEAVblaResp)
Using 'cl.exe' from Visual Studio 2010 on 64 bit Windows 10
Continue reading...