こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

IP Helper APIを使うとエラーが発生する

プログラミング初心者です。
Visal Studio 2010を使用してC++の勉強をしています。

http://www.geekpage.jp/programming/iphlpapi/interface-info.php
上の記事を参考にIP Helper APIのプログラミングを試してみたのですが、エラーが出てしまいコンパイルできません。
「Windows.hをインクルードすると良い」という記事を見つけて試しましたが、同様のエラーが出るだけでした。

//コード------------
#include "stdafx.h"
#include <WinSock2.h>
#include <IPHlpApi.h>
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
PIP_INTERFACE_INFO pInfo = NULL;
ULONG ulOutBufLen = 0;
DWORD dwRetVal = 0;
/* 変数ulOutBufLenに必要なサイズを取得 */
if( GetInterfaceInfo(NULL, &ulOutBufLen)==ERROR_INSUFFICIENT_BUFFER ){
pInfo = (IP_INTERFACE_INFO *)malloc(ulOutBufLen);
}
return 0;
}
//実行結果----------
error LNK1120: 外部参照 1 が未解決です。 R:\Programming\VisualStudio2010\Projects\IPHLPAPIの利用\Debug\IPHLPAPIの利用.exe IPHLPAPIの利用
error LNK2001: 外部シンボル "_GetInterfaceInfo@8" は未解決です。 R:\Programming\VisualStudio2010\Projects\IPHLPAPIの利用\IPHLPAPIの利用\IPHLPAPIの利用.obj IPHLPAPIの利用
//------------------

ちなみに、main内の5行目「GetInterfaceInfo」は「IPHlpApi.h」内にちゃんと存在しています。

以上になります。長文お読みいただきありがとうございました。
色々検索してみましたがお手上げ状態です・・・よろしくお願いいたします。

投稿日時 - 2013-11-22 18:26:02

QNo.8357648

困ってます

質問者が選んだベストアンサー

MSDNには,
> Requirements
> Library Iphlpapi.lib
とあるのですが,Iphlpapi.libをちゃんとリンクしていますか。

ref)
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365947(v=vs.85).aspx

投稿日時 - 2013-11-22 19:41:26

補足

直接解決に繋がったこちらのご回答をBAとさせていただきます。お二方ともありがとうございました。

投稿日時 - 2013-11-23 19:46:23

お礼

ご回答ありがとうございます。#includeの下に
「#pragma comment(lib,"iphlpapi.lib")」
の一行を追加したところ正常に動作しました!
リンクという機能があったのは初めて知りました。大変勉強になりよかったです。ありがとうございます。

投稿日時 - 2013-11-23 19:36:03

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>ちなみに、main内の5行目「GetInterfaceInfo」は「IPHlpApi.h」内にちゃんと存在しています。

それはGetInterfaceInfoという関数があることが書かれているだけ、その実体は#1の書かれているライブラリにあります。
「プロトタイプ宣言」を調べてみてください。

投稿日時 - 2013-11-22 19:46:03

お礼

ご回答ありがとうございます。
そう言われてみれば、確かにF12キーで参照できるのはヘッダの宣言ですね。プロトタイプ宣言については一応知っているつもりでしたが、多量の記述に圧倒されて本質を見抜けずにいました。でもご指摘いただけたおかげで、また一つ理解を進めることができよかったです。ありがとうございます。

投稿日時 - 2013-11-23 19:44:40

あなたにオススメの質問