I used that HTTP server example code as my starting point in my C++ application. I don't believe your issue with cgi_lnk_tbl has anything to do with name-mangling however. It's defined as follows in the demo:
extern const HTTPSRV_CGI_LINK_STRUCT cgi_lnk_tbl[];
I think you just forgot to add cgi.c to your build.
Rather than modify the library headers to use C linkage I suggest you create a header in your code, add the extern "C" around the network-related files, and reference this when needed. I created a "MQXNetwork.h" that looks like this:
#ifndef __MQXNETWORK_H__
#define __MQXNETWORK_H__
extern "C"
{
#include <httpsrv.h>
#include <rtcs.h>
#include <ipcfg.h>
}
#endif
Unrelated to your post I made a request today to add the extern "C" support to the library.
I encourage younger embedded engineers to embrace C++. At least until something better comes along.