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

解決済みの質問

VC++2005ExpressEditionでサンプルプログラムが動かない

 Visual C++ 2005 Express Editionを使用しています.コンパイル時にエラーが出て困っています.どなたか解決法をご教授ください.

 「猫でもわかるネットワークプログラミング」という本に載っているサンプルプログラムをコンパイルしようとすると,エラーが出ます(下のアドレス(*1)の『PDFで試し読み』に該当プログラムがあります).

 とりあえず少しずつ実行しようと,サンプルプログラムの冒頭の16行目まで書いてコンパイル・実行すると,完全に意図した動きをしました.しかし,21行目まで書いてコンパイルすると,次のエラーが出ます(ファイル名は net.cpp ).

vvvvvvvvvvvv
1>c:\***\net.cpp(16) : warning C4996: 'gets' が古い形式として宣言されました。
1> c:\program files\microsoft visual studio 8\vc\include\stdio.h(270) : 'gets' の宣言を確認してください。
1> メッセージ: 'This function or variable may be unsafe. Consider using gets_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
1>リンクしています...
1>net.obj : error LNK2001: 外部シンボル "__imp__InternetOpenW@20" は未解決です。
1>C:\***\Debug\net.exe : fatal error LNK1120: 外部参照 1 が未解決です。
1>ビルドログは "file://c:\***\BuildLog.htm" に保存されました。
1>net - エラー 2、警告 1
^^^^^^^^^^^^

 一文を加えた途端にエラーとなったので困惑しています.何かVC++の設定が悪いのでしょうか.「新規作成->プロジェクト->Win32->Win32コンソールアプリケーション」とし,次に出てくる「Win32アプリケーション ウィザード」で「空のプロジェクト」にチェックを入れています.

(*1) http://shop.sbcr.jp/bm_detail.asp?sku=4797323604

投稿日時 - 2006-04-18 22:29:12

QNo.2100318

すぐに回答ほしいです

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

gets に関するメッセージはwarning (警告)ですので、直接関係はないです。
失敗しているのはリンクで失敗しています。
「PDFで試し読み」の本の中でのページ番号14に
Wininet.lib をプロジェクトに参加させる
というのをやっていないのではないですか?
あるいは、実際に呼び出されるWininet.dllがないのかもしれません。

その本を持っていないし、実際に試してもいないので、見当違いなコメントだったらすみません。

投稿日時 - 2006-04-19 00:40:27

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

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

回答(5)

ANo.5

libをリンクし忘れていますね。
空のプロジェクトで構成している為、標準ライブラリがリンクされていない状態です。
今、手元に開発環境が無いので、必要となるlib名は御自分で調べて下さい。

投稿日時 - 2006-04-19 12:59:16

ANo.4

>とりあえず少しずつ実行しようと(中略)21行目まで書いてコンパイルすると

そのプログラムは「21行目まで」で完結しているのか?
20行目を動かすのに必要なものが22行目に書かれていることだってよくあるぞ。

投稿日時 - 2006-04-19 10:07:57

getsのことでしたら
猫さんのサイトに出てますよ。

参考URL:http://www.kumei.ne.jp/c_lang/net2005/index.html

投稿日時 - 2006-04-18 23:15:51

ANo.1

添付のCD-ROMにソースコード載ってるんですね。
まず、それでコンパイル出来るか試しては?
動作確認するにしても、デバッカにてステップ毎の実行することの
方がずっとためになると思いますよ。

投稿日時 - 2006-04-18 23:10:40