そこで以前こちらの掲示板に似た質問がありましたので、そのソースを利用させて頂きましたところ、ビルドエラーで行き詰まりました。
以下ソースコードです。
#include <windows.h>
#include <Natupnp.h>
#include <objbase.h>
#include <oleauto.h>
#pragma comment(lib,"ole32.lib")
#pragma comment(lib,"oleaut32.lib")
int main()
{
// まずCOMの初期化
::CoInitialize( NULL );
// インスタンス取得
IUPnPNAT *nat;
::CoCreateInstance( CLSID_UPnPNAT, NULL, CLSCTX_ALL, IID_IUPnPNAT, (void **)&nat );
// ポートマッピングのリスト取得
IStaticPortMappingCollection *maps = NULL;
nat->get_StaticPortMappingCollection( &maps );
// アドレスと名前を登録できる形式に変更
char *ip = "192.168.11.2"; //<- 自分のIPアドレス
WCHAR localIPWideString[ 16 ];
MultiByteToWideChar( CP_ACP, 0, ip, -1, localIPWideString, 16 );
BSTR localIPBstr = SysAllocString( localIPWideString );
BSTR proto = SysAllocString( L"TCP" ); //<- TCP/IPで登録する
BSTR description = SysAllocString( L"TOOL" ); //<- ここはポートマッピングに登録する名前
// ポートマッピング
int port = 57630; //<- 開放するポート番号
IStaticPortMapping *map;
maps->Add( port, proto, port, localIPBstr, VARIANT_TRUE, description, &map );
// BSTR の解放
SysFreeString( description );
SysFreeString( proto );
SysFreeString( localIPBstr );
// オブジェクト解放
map->Release();
maps->Release();
nat->Release();
// COMの終了
::CoUninitialize();
}
error LNK2020: 未解決のトークン (0A00005A) CLSID_UPnPNAT
error LNK2020: 未解決のトークン (0A00005B) IID_IUPnPNAT
error LNK2001: 外部シンボル "IID_IUPnPNAT" は未解決です。
error LNK2001: 外部シンボル "CLSID_UPnPNAT" は未解決です。
fatal error LNK1120: 外部参照 4 が未解決です。
自身で調べてみましたが何分情報が少ないため、さっぱりです。
どうぞよろしくお願い致します。