Visual Studio Tips
目次
1._mainCRTStartup は未解決
2.___security_cookieが未解決
3.@_RTC_CheckStackVars@8や__RTC_CheckEsp が未解決
4.__RTC_Shutdownや__RTC_InitBase が未解決
5.GetLastError()の値
6.Windows Messageの意味
7.文字コード調査
8.バイナリの中身
9.デバッグ中に使える他の変数
1.標準ライブラリを使わない場合、外部シンボル "_mainCRTStartup" は未解決です。と表示される。
1>LINK : error LNK2001: 外部シンボル "_mainCRTStartup" は未解決です。 1 |
解決策:
エントリポイントを_mainCRTStartupにして、_tmain(int argc, _TCHAR* argv[])などを _mainCRTStartup()で置き換えます。
コマンドラインの取得は、PathGetArgsやGetCommandLineを併用します。
2.標準ライブラリを使わない場合に___security_cookieが未解決と表示されることがある。
1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0 1>Copyright (C) Microsoft Corporation. All rights reserved. 1>リンクしています... 1>sample.obj : error LNK2019: 未解決の外部シンボル ___security_cookie が関数 _WinMain@16 で参照されました。 1>sample.obj : error LNK2019: 未解決の外部シンボル @__security_check_cookie@4 が関数 _WinMain@16 で参照されました。 1>Release/sample.exe : fatal error LNK1120: 外部参照 2 が未解決です。 |
解決法:
バッファセキュリティチェックをいいえにします。
3.標準ライブラリを使わない場合に@_RTC_CheckStackVars@8や__RTC_CheckEsp が未解決と表示されることがある。
4.標準ライブラリを使わない場合に__RTC_Shutdownや__RTC_InitBase が未解決と表示されることがあります。
1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0 1>Copyright (C) Microsoft Corporation. All rights reserved. 1>リンクしています... 1>sample.obj : error LNK2019: 未解決の外部シンボル @_RTC_CheckStackVars@8 が関数 "int __cdecl mainCRTStartup(void)" (?mainCRTStartup@@YAHXZ) で参照されました。 1>sample.obj : error LNK2019: 未解決の外部シンボル __RTC_CheckEsp が関数 "int __cdecl mainCRTStartup(void)" (?mainCRTStartup@@YAHXZ) で参照されました。 1>Release/sample.exe : fatal error LNK1120: 外部参照 2 が未解決です。 |
1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0 1>Copyright (C) Microsoft Corporation. All rights reserved. 1>リンクしています... 1>sample.obj : error LNK2001: 外部シンボル "__RTC_Shutdown" は未解決です。 1>sample.obj : error LNK2001: 外部シンボル "__RTC_InitBase" は未解決です。1>Release/sample.exe : fatal error LNK1120: 外部参照 2 が未解決です。 |
解決法:
基本ランタイムチェックを規定値にします。前者がスタックフレームのチェック。後者が初期化されていない変数。
例えば、定数宣言で文字列代入を行ったりすると表示されることがあります。
5. デバッグ中にGetLastError()の値が知りたい。
解決方法:
ウォッチリストで @err,hr を加える。
6.デバッグ中Windows Messageの意味が知りたい。
ウォッチリストで 0x2a,wm などと表記する。→ WM_SPOOLERSTATUS
7. デバッグ中に特定の文字コードを調べたい
解決方法:
ウォッチリストで 0x2a,c → "*"
8. デバッグ中にバイナリ配列の中身を見たい。
解決方法:
ウォッチリストで 変数名,mb
Wide型なら mw 他にも、 md mq が使える。
9. デバッグ中に使える他の変数。
@TIB FS:[0]の値。
@CLK リアルタイムクロックの値。
Comments