James,
I think the following messages have made it pretty clear that the problem is caused by unresolved external references during linking :
gui_convoy_label.cc:(.text+0x6b0): undefined reference to `vtable for existing_convoy_t'
gui_convoy_label.cc:(.text+0x6dd): undefined reference to `vtable for existing_convoy_t'
gui_convoy_label.cc:(.text+0x78f): undefined reference to `convoy_t::calc_max_speed(weight_summary_t const&)'
gui_convoy_label.cc:(.text+0x803): undefined reference to `weight_summary_t::add_weight(unsigned int, int)'
gui_convoy_label.cc:(.text+0x869): undefined reference to `convoy_t::calc_max_speed(weight_summary_t const&)'
gui_convoy_label.cc:(.text+0xb31): undefined reference to `existing_convoy_t::update_weight_summary(weight_summary_t&)'
gui/convoi_info_t.o: In function `convoi_info_t::zeichnen(koord, koord)':
convoi_info_t.cc:(.text+0x3c61): undefined reference to `vtable for existing_convoy_t'
convoi_info_t.cc:(.text+0x3c75): undefined reference to `vtable for existing_convoy_t'
convoi_info_t.cc:(.text+0x3ccd): undefined reference to `existing_convoy_t::update_weight_summary(weight_summary_t&)'
convoi_info_t.cc:(.text+0x3d38): undefined reference to `convoy_t::calc_max_speed(weight_summary_t const&)'
convoi_info_t.cc:(.text+0x3dba): undefined reference to `convoy_t::calc_move(long, float, weight_summary_t const&, int, int&, int&)'
convoi_info_t.cc:(.text+0x3e25): undefined reference to `convoy_t::calc_move(long, float, weight_summary_t const&, int, int&, int&)'
convoi_info_t.cc:(.text+0x3e90): undefined reference to `convoy_t::calc_move(long, float, weight_summary_t const&, int, int&, int&)'
convoi_info_t.cc:(.text+0x3efb): undefined reference to `convoy_t::calc_move(long, float, weight_summary_t const&, int, int&, int&)'
convoi_info_t.cc:(.text+0x3f66): undefined reference to `convoy_t::calc_move(long, float, weight_summary_t const&, int, int&, int&)'
gui/convoi_info_t.o:convoi_info_t.cc:(.text+0x3fd1): more undefined references to `convoy_t::calc_move(long, float, weight_summary_t const&, int, int&, int&)' follow
gui/convoi_info_t.o: In function `convoi_info_t::zeichnen(koord, koord)':
convoi_info_t.cc:(.text+0x45d3): undefined reference to `convoy_t::calc_max_speed(weight_summary_t const&)'
convoi_info_t.cc:(.text+0x460a): undefined reference to `weight_summary_t::add_weight(unsigned int, int)'
convoi_info_t.cc:(.text+0x4670): undefined reference to `convoy_t::calc_max_speed(weight_summary_t const&)'
convoi_info_t.cc:(.text+0x4d99): undefined reference to `existing_convoy_t::update_weight_summary(weight_summary_t&)'
convoi_info_t.cc:(.text+0x4dcf): undefined reference to `existing_convoy_t::update_weight_summary(weight_summary_t&)'
convoi_info_t.cc:(.text+0x502a): undefined reference to `existing_convoy_t::update_weight_summary(weight_summary_t&)'
convoi_info_t.cc:(.text+0x504a): undefined reference to `existing_convoy_t::update_weight_summary(weight_summary_t&)'
convoi_info_t.cc:(.text+0x506a): undefined reference to `existing_convoy_t::update_weight_summary(weight_summary_t&)'
gui/convoi_info_t.o:convoi_info_t.cc:(.text+0x508a): more undefined references to `existing_convoy_t::update_weight_summary(weight_summary_t&)' follow
simconvoi.o: In function `convoi_t::calc_acceleration(long)':
simconvoi.cc:(.text+0xc56): undefined reference to `vtable for existing_convoy_t'
simconvoi.cc:(.text+0xc6f): undefined reference to `vtable for existing_convoy_t'
simconvoi.cc:(.text+0xcc5): undefined reference to `existing_convoy_t::update_weight_summary(weight_summary_t&)'
simconvoi.cc:(.text+0xcfc): undefined reference to `convoy_t::calc_move(long, float, weight_summary_t const&, int, int&, int&)'
collect2: ld returned 1 exit status
make: *** [sim] Error 1
In Makefile, convoy.cc has not been added to the list of source files, hence the above error messages. I think this is just a pretty simple problem -- even if you are developing using MSVC, this is just very fundamental knowledge. I really can't understand why you are not able to fix it for such a long time.