C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: VC++2008proによるファイル入出力


(過去ログ 109 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■64696 / inTopicNo.1)  VC++2008proによるファイル入出力
  
□投稿者/ undergo (1回)-(2012/12/20(Thu) 11:15:40)

分類:[C/C++] 

VC++2008proで開発しています。
stdio.h, stdlib.hはインクルードしているのもの、未解決のシンボルというエラーが出てきます。
原因は何なのでしょうか?
分かる人がいれば教えてください。

1>filterexe.obj : error LNK2019: 未解決の外部シンボル _fclose が関数 "void __cdecl WinMainCRTStartup(void)" (?WinMainCRTStartup@@YAXXZ) で参照されました。
1>filterexe.obj : error LNK2019: 未解決の外部シンボル _fscanf が関数 "void __cdecl WinMainCRTStartup(void)" (?WinMainCRTStartup@@YAXXZ) で参照されました。
1>filterexe.obj : error LNK2019: 未解決の外部シンボル _exit が関数 "void __cdecl WinMainCRTStartup(void)" (?WinMainCRTStartup@@YAXXZ) で参照されました。
1>filterexe.obj : error LNK2019: 未解決の外部シンボル _fprintf が関数 "void __cdecl WinMainCRTStartup(void)" (?WinMainCRTStartup@@YAXXZ) で参照されました。
1>filterexe.obj : error LNK2019: 未解決の外部シンボル ___iob_func が関数 "void __cdecl WinMainCRTStartup(void)" (?WinMainCRTStartup@@YAXXZ) で参照されました。
1>filterexe.obj : error LNK2019: 未解決の外部シンボル _fopen が関数 "void __cdecl WinMainCRTStartup(void)" (?WinMainCRTStartup@@YAXXZ) で参照されました。
1>filterexe.obj : error LNK2019: 未解決の外部シンボル ___security_cookie が関数 "void __cdecl WinMainCRTStartup(void)" (?WinMainCRTStartup@@YAXXZ) で参照されました。
1>filterexe.obj : error LNK2001: 外部シンボル "@__security_check_cookie@4" は未解決です。
1>Release/filtexe.exe : fatal error LNK1120: 外部参照 8 が未解決です。
引用返信 編集キー/
■64697 / inTopicNo.2)  Re[1]: VC++2008proによるファイル入出力
□投稿者/ とっちゃん (33回)-(2012/12/20(Thu) 11:49:18)
とっちゃん さんの Web サイト
No64696 (undergo さん) に返信
> VC++2008proで開発しています。
> stdio.h, stdlib.hはインクルードしているのもの、未解決のシンボルというエラーが出てきます。
> 原因は何なのでしょうか?
> 分かる人がいれば教えてください。
>
未解決の外部シンボルは、ライブラリが指定されていない場合に出ます。
通常、プロジェクトの新規作成から、コンソールアプリやWindowsアプリなどを選択して作成していれば
このエラーは出ないはずなのですが...

どういう形でプロジェクトを作成し、どういうプログラムを書こうとしていますか?

main() 関数を用意するプログラム形式なら、コンソールアプリとして作成する必要があります。
おそらくプロジェクトの設定がGUIアプリ(WinMainを必要とするアプリ)になっていると思われます。

引用返信 編集キー/
■64698 / inTopicNo.3)  Re[2]: VC++2008proによるファイル入出力
□投稿者/ 774RR (35回)-(2012/12/20(Thu) 12:56:20)
新規に作成したプロジェクトの設定が標準設定なら、ランタイムライブラリ指定が
マルチスレッド DLL (デバッグ) つまり /MD や /MDd であるはずなので、
見つからないシンボル名は _fclose ではなく __imp_fclose であるはず。
つまり、プロジェクトの設定変更をしたはず。
さらに msvcrt.lib なり libcmt.lib なりは標準でリンク対象となっているわけで、
これを外すには /NODEFAULTLIB の指定を追加するとか、
やはり、プロジェクトの設定変更をしたはず。

ということで、推測に過ぎないんだけど
「うまくいかないから(プロジェクトの設定を)いろいろいじってみた」結果として
今のプロジェクトの設定は目的に不一致なものになっている、に1票。

今のプロジェクトとソースファイルはそのまま閉じて
新規プロジェクトを Win32 - Win32 コンソールアプリ として作成し
ソースファイルを既存項目の追加から追加してみると良いかもしれない。
引用返信 編集キー/
■64701 / inTopicNo.4)  Re[3]: VC++2008proによるファイル入出力
□投稿者/ undergo (2回)-(2012/12/20(Thu) 13:30:42)
No64698 (774RR さん) に返信

> つまり、プロジェクトの設定変更をしたはず。
> さらに msvcrt.lib なり libcmt.lib なりは標準でリンク対象となっているわけで、
> これを外すには /NODEFAULTLIB の指定を追加するとか、
> やはり、プロジェクトの設定変更をしたはず。

そうですね。
/NODEFAULTLIBの指定をしたりといろいろとプロジェクトをいじっていた結果そうなっていました。

> 今のプロジェクトとソースファイルはそのまま閉じて
> 新規プロジェクトを Win32 - Win32 コンソールアプリ として作成し
> ソースファイルを既存項目の追加から追加してみると良いかもしれない。

この方法で、未解決のシンボルのエラーは消えました。
ありがとうございます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -