■ error LNK2019を解決するには?
むきんぽ
2007/12/06(木) 08:33:30 <初心者> 
超初心者です。初めてWindows XPでVisual C++ 2005 をはじめて参考書を使って
#include <iostream>
using namespace std;
int main()
{
cout << "Hello\n";
return 0;
}
を打ち込んだのですが、
リンクしています...
Sample1.obj : error LNK2019: 未解決の外部シンボル "public: __thiscall std::ios_base::Init::Init(void)" (??0Init@ios_base@std@@QAE@XZ) が関数 "void __cdecl std::`dynamic initializer for '_Ios_init''(void)" (??__E_Ios_init@std@@YAXXZ) で参照されました。
Sample1.obj : error LNK2019: 未解決の外部シンボル "public: __thiscall std::ios_base::Init::~Init(void)" (??1Init@ios_base@std@@QAE@XZ) が関数 "void __cdecl std::`dynamic atexit destructor for '_Ios_init''(void)" (??__F_Ios_init@std@@YAXXZ) で参照されました。
C:\Documents and Settings\今道又映\My Documents\Visual Studio 2005\Projects\Sample1\Debug\Sample1.exe : fatal error LNK1120: 外部参照 2 が未解決です。
ビルドログは "file://c:\Documents and Settings\今道又映\My Documents\Visual Studio 2005\Projects\Sample1\Sample1\Debug\BuildLog.htm" に保存されました。
Sample1 - エラー 3、警告 0
とでます。
他のサイトで解決法を見てたけどどうも理解できません・・
どうかご助言をお願いします・・・
επιστημη
2007/12/06(木) 09:13:51
ランタイムライブラリのリンクができてませんね。
雰囲気からしてVC++のインストールに失敗しているように思われます。
むきんぽ
2007/12/06(木) 12:12:38 <初心者> 
返答ありがとうございます。
再インストールしてみたのですがやはり結果が同じです。
Visual C++ 2005 Express EditionとMicrosoft Platform SDK
for Windows Server 2003をインストールしてますがそのほかに
必要なものはありますか?
あるとしたらサイト等教えてください。よろしくお願いします。
みい
2007/12/06(木) 13:32:50
プロジェクトの種類は何を指定しているのでしょうか。
ぼーず
2007/12/06(木) 13:51:21
このサンプルならPlatform SDKすらいりませんよ。
書き込みをコピペしてやってみましたが、Visual C++ 2005 Express Editionだけで問題なくビルドできました。
関係ないとは思いつつ日本語のユーザー名でも試してみましたが大丈夫でした。
何なんでしょうね。
むきんぽ
2007/12/06(木) 14:08:46 <初心者> 
全般の空のプロジェクトで、新しい項目の追加でコードの
C++ファイルを選択しました。
επιστημη
2007/12/06(木) 14:16:32
> 全般の空のプロジェクトで、新しい項目の追加でコードの
> C++ファイルを選択しました。
再現できません。ちゃんとコンパイル/リンク/実行できました。
お
2007/12/06(木) 14:36:35
オプション画面でディレクトリの設定をしてないのでは?
ぼーず
2007/12/06(木) 14:37:00
「Visual Studio 2005 コマンド プロンプト」で、cppファイルのディレクトリに移動してから
(もしくは、フルパスでcppファイルを指定して)
cl /EHsc Sample1.cpp
でコンパイルしても同じエラーになりますか?
仲澤@失業者
2007/12/06(木) 15:25:13
変ですねぇ。たしか
ios_base::Init::Init(void)はヘッダにインライン
だったような気のせいがします。
リンクエラーってのが妙ですねぇ。
(ただいまVC6.0なので確証無し)
むきんぽ
2007/12/06(木) 17:04:26 <初心者> 
今下記のソースコードを入力してみたらちゃんとなりました。
/* hello world program */
#include <stdio.h>
int main(void)
{
printf("hello world!\n");
return 0;
}
です。ただし
#include <iostream>
using namespace std;
int main()
{
cout << "Hello\n";
return 0;
}
を再入力したけれどやはりエラーが起こります。
επιστημη
2007/12/06(木) 17:15:03
現象からすると
"C++ライブラリがリンクできない"
もしくは
"どっかヨソにあるヘッダ<iostream>を読み込んでる"
むきんぽ
2007/12/06(木) 17:25:54 <初心者> 
<"C++ライブラリがリンクできない"
<"どっかヨソにあるヘッダ<iostream>を読み込んでる"
この2件についてはどういう風に解決すれば
よろしいでしょうか?
επιστημη
2007/12/06(木) 17:34:05
原因が特定できないうちはどんな解決法も"ダメ元"でしかない。
ぼーず
2007/12/06(木) 17:56:34
[ツール]-[オプション]を開いて
[プロジェクトおよびソリューション]-[VC++ディレクトリ]の
「インクルードファイル」と「ライブラリファイル」を
表示されている順番通りに列挙してもらえませんか?
むきんぽ
2007/12/06(木) 19:38:25
インクルードファイルは
C:\Program Files\Microsoft Platform SDK\Include
C:\Program Files\Microsoft Platform SDK\Include\mfc
C:\Program Files\Microsoft Platform SDK\Include\atl
C:\Program Files\Microsoft Platform SDK\Include\crt
C:\Program Files\Microsoft Platform SDK\Include\gl
$(VCInstallDir)include
$(VCInstallDir)PlatformSDK\include
$(FrameworkSDKDir)include
ライブラリファイルは
C:\Program Files\Microsoft Platform SDK\Lib
$(VCInstallDir)lib
$(VCInstallDir)PlatformSDK\lib
$(FrameworkSDKDir)lib
$(VCInstallDir)
$(VCInstallDir)lib
です。
ぼーず
2007/12/06(木) 20:02:44
C:\Program Files\Microsoft Platform SDK\Include\crt
のiostreamを使ってるからですね。
再現できました。
これを削除すればいいと思います。
そして、mfc、atl、glもいらないと思います。
むきんぽ
2007/12/06(木) 20:16:08 <初心者> 
[[解決]]
成功しました!
協力してくださった方、ありがとうございました!!
毎週金曜日はポイント最大3倍!さらに4倍のチャンスも!
