ホーム » 検索結果: VS 6
検索結果: VS 6
Win11 に VS 6 のインストール
先日,Win11 環境に VS6 をインストールした.
手順は Win10 の時と同様 で,DB 関係が入らない様に.
VB6 は起動した.
が,VC6 は起動できない.
昨日,Win10 上の仮想マシンの Win11 に VS6 と SP6 をインストール.
この時 VC 6 は起動可能で,ビルド,デバッグなども動作した.
今日,それを確認すると,デバッグができなくなっている.
全くできないわけではないが,ブレークするとその後がうまくない.
何かが更新されて動作しなくなったのか?
Win11 上の仮想マシンとしての Win11 も,起動はできるがデバッグがうまくない.
Win10 の時もそうだったが,何かとの相性? … Win11 21H2 だったため.
2022/10/18
以前使っていた WinXP の VHD があったので,それを Win11 上の仮想マシンとして追加.
最近使ってなかったので,いろいろと問題が…
SMB1 や mklink .
なかなかいい運用が見つからない.
2022/10/23
22H2 に上げて うまく動作する様になった.
2023/10/30
VC 6 は,Win 10 ,11 で特に困ることはなく利用できている.
たまに使用する機能でうまくないのは「コンポーネントギャラリ」くらい?
Win11 はシステムドライブが SSD のため,$(OutDir) は「シンボリック リンク」にしている.
VS 6 RTM bug … ?
Win10 環境に入れた VC 6 でビルドした exe をテストしていると…
「何か修正を間違えた?」と思い,幾つかの exe で実行するとうまくいく.
VC 14 などでビルドしたものや,VC 6 デバッグビルドのものは OK .
2021/06 頃からの VC 6 リリースビルドのものがうまくなさそう.
WinXP 環境の VC 6 でビルドしたものも OK .
Win10 に入れた VS 6 が英語版だったので,SP はまだ入れていない.
2021/08/17
VC 6 RTM で作成される exe がうまくないものと思われる.
2021/08/18
次の様なコードでテストすると ::GonsA_Triangulation で長方形の片方が消えてしまう.
GonsA gnsa = ::To_GonsA(_3d_file) ;
gnsa = ::GonsA_Triangulation(gnsa) ;
::GonsA_Toix3(gnsa,(out_name+_T(".ix3")).c_str()) ;
::GonsA_ToOBJ(gnsa,(out_name+_T(".imo")).c_str()) ;
::GonsA_ToWRL(gnsa,(out_name+_T(".wrl")).c_str()) ;
その後いろいろとデバッガでやってみたが,その中は限定できなかった.
最適化の「実行速度」以外では,現象は発生しない.
結局 SP 6 をインストールすることに…
が,インストールできない.
対応方法がわからないので,仮想マシンの Win10 Pro x64 にインストールしてみるとうまくいった.
ちょっと面倒(ビルド時間がかかるなど)だが,動かないよりは良いので併用か?
2021/08/19
仮想マシンの VC 6 のデバッグ.
一度ブレークさせると,その後ステップ実行できない.
---------------------------
Microsoft Visual C++
---------------------------
Unhandled exception in GLSm.exe (OLE32.DLL): 0xC0000005: Access Violation.
---------------------------
OK
---------------------------
Win10 に VS 6 インストール
今まで仮想マシンの WinXP で VC 6 を使用してきたが,ちょっと面倒なので Win10 環境に入れてみた.
使用したのは次の ISO .
en_visual_studio_6.0_professional_x86_dvd_224df581.iso
2021/04 に VS のダウンロードサイトで見つけた.
その時 Win7 環境などにインストールして動作することは確認済み.
インストール時,データベース関連を入れると止まると書かれていたので,外してインストール.
VB6開発環境をWindows 10にインストールする手順
VC 6 を簡単に確認した限りは何とか使えそう.
Win11 に VS 6 のインストール
Win11 22H2(デバッグできない時の設定も書いています)
2024/04/29
Win10 ,Win11 共に一部の制限があるものの VC 6 は特に問題なく使えている.
VS 6 の SP の確認
VS 6 の SP の確認
http://support.microsoft.com/kb/316915/ja
https://www.betaarchive.com/wiki/index.php?title=Microsoft_KB_Archive/316915
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\6.0\ServicePacks
Ver. | SP | MFC | MSC | |
VS 6 | VC 6 | 6 | 0x0600 | 1200 |
VS .net | VC 7 | 1 | 0x0700 | 1300 |
VS 2003 | VC 7.1 | 1 | 0x0710 | 1310 |
VS 2005 | VC 8 | 1 | 0x0800 | 1400 |
VS 2008 | VC 9 | 1 | 0x0900 | 1500 |
VC 2022 17.6.?
先日 VS 2022 の更新版 があったのでアップデート.
個人的なツールの 3D ビューア をビルドすると,
ALYac Gen:Variant.Tedy.373496
Arcabit Trojan.Tedy.D5B2F8
BitDefender Gen:Variant.Tedy.373496
Cylance Unsafe
DeepInstinct MALICIOUS
Emsisoft Gen:Variant.Tedy.373496 (B)
eScan Gen:Variant.Tedy.373496
GData Gen:Variant.Tedy.373496
MAX Malware (ai Score=81)
McAfee Artemis!AE3A9CE560AE
McAfee-GW-Edition Artemis
Trellix (FireEye) Gen:Variant.Tedy.373496
TrendMicro-HouseCall TROJ_GEN.R002H09EQ23
VIPRE Gen:Variant.Tedy.373496
VC 2019 などでビルドしたものは問題ない.また VC 2022 更新前のものも問題なかった.
今まで VS の更新版が出てすぐにそれでビルドすることは少なかった.
テストが不十分なこともあり,リリース用は主に VC 2017 を使用している.
更新版によっては,この様なことがあるのかもしれない.
落ち着くまでしばらく時間がかかるのか?
VS インストーラ 対象 OS
先日,.NET の ZipFile クラス を 使用した exe を作成した.
Win10 以降の環境では特に問題ないと思うが,テスト用に Win7 などでも同じ msi にしたかった.
「VS Installer target OS」で検索.
DOBON.NET 起動条件エディタの使い方
01264 : Windows Installer プロパティを使用した条件の設定
03192 : MSI で Windows 10 を判定する方法
Windows インストーラー
MDAC バージョンを確認する
調べるといろいろとできそうだが,今回は Win8 以前であれば iZIP.exe をインストールしない様に.
.NET Framework のバージョンおよび依存関係
exe のプロパティの「Condition」に「VersionNT>602」.
これで,Win7 には入らず,Win10 にはインストールされることを確認できた.
Linux VS Code インストール
Fedora 環境に VS Code のインストール.
Fedora Linux に Visual Studio Code をインストールする方法
最初の次のコマンドで,時間がかかっている.
sudo dnf upgrade –refresh
それで調べているともっと簡単と思われる情報が…
Visual Studio Code – Fedora Project Wiki
次のコマンドでインストール.
flatpak install https://flathub.org/repo/appstream/com.visualstudio.code.flatpakref
何とか入った.
が,どうやって使うのか…
Ubuntu 環境は OS が古く,20.04 への更新から.
さらに flatpak をインストールする必要があった.
sudo apt install flatpak
そして,
flatpak install https://flathub.org/repo/appstream/com.visualstudio.code.flatpakref
こちらの方は「日本語化」のインストールの案内が自動で出てきた.
Fedora 環境では,手動で追加.
「言語拡張機能の参照」をクリック.すると,左に「C#」などがリストされる.
.NET のインストール.
Linux に .NET をインストールする
dotnet と入力すると,sudo snap install dotnet-sdk と出てきた.
これは違った?
次の所にある C# のコードを作成して VS Code で「デバッグなして実行」.
コンソール アプリ
すると,また同じ所に.
Ubuntu に .NET SDK または .NET ランタイムをインストールする
順に入れたが…
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update && sudo apt-get install -y dotnet-sdk-6.0
よくわからない.
次の所を参考にコマンドで…
Linux での開発用に C# を設定する
次のコマンドを入力すると…
dotnet new console
そして,
dotnet run
何とか,コンパイル,実行できることは確認できた.
今度は Fedora 環境に.
Fedora に .NET SDK または .NET ランタイムをインストールする
sudo dnf install dotnet-sdk-6.0
dotnet new console と dotnet run
2022/11/25
Windows 環境だと…
dotnet new <テンプレート>
VS Code はエディタとして使用する程度?
チュートリアル: Visual Studio Code を使用して .NET コンソール アプリケーションを作成する
うまく動作しない.ターミナルからでは dotnet コマンドへのパスが通っていない?
VS Installer 2022
以前 VS 2017 などで「VS インストーラ」プロジェクトを作成した.
今回は VS 2022 で使用できる様にする設定など.
*「VS インストーラ」は,VS 2012 と VS 2013 にはなさそう.
先ず,プロジェクト テンプレートの追加.VS の「拡張機能の管理」メニューを選択.
検索ボックスに「Installer」と入力.
「ダウンロード」ボタンを押して,一度 VS を終了させる.
「新しいプロジェクトの追加」で「Installer」と入力.
「Setup Project」を選択して「次へ」.あとはプロジェクト名を指定して「作成」.
「File System」のウィンドウを開き「Application Folder」を選択.
エクスプローラなどから exe をドロップ.
プロジェクトの「プロパティ」.
AddRemoveProgramsIcon | 「アプリと機能」で表示されるアイコンの指定 |
Description | |
ProductName | 製品名 インストール先フォルダ名にも使用される |
RemovePreviousVersions | 「True」に |
必要に応じて「Application Folder」-「プロパティ」-「Default Location」を変更.
「ツリー」の「Install」-「Start」-「インストール フォルダー」を選択.
プロパティの「InstallAllUsersVisible」を Flase に.
VS Installer
久しぶりにインストーラを…
今までのものは「VS インストーラ」.
前も使ったが忘れていた.アンインストールで,ファイルをそのまま残す設定.
「Permanent」を「True」に.
ショートカットなどを作成すると,アンインストール時に時間がかかってしまう.
それで,以前は使ってなかったが,更新版のインストール.
「RemovePreviousVersions」を「True」に.
「Version」を更新する.同様に exe などの更新も必要.bmp などはタイムスタンプでいける?
VS 2022 インストール
VS 2022 があったのでインストール.
共通の C の include などは VC 10 からの設定が引き継がれている(同じ所).
フォールバックの設定を E:\Temp\_Fallbck に.
MFC などランタイムは VC 2015 以降同じもの.
3D ビューアをビルドしたが,その範囲では,特に目立った違いはなさそう.
Current という表現は何なんだろうか?
VC のランタイム vc_redist.x86.exe などは次の所にまとめている.
https://mish.work/joomla/index.php/cpp/ref-vcredist-xxx-exe.html
VC 2015 から 2022 までは,同じもので動作する.
C2664
スタックを使用した次の様なコード.
stack_s so ;
エラー情報を指定する様に変更してビルド.
i_error ie ; stack_s so(&ie) ;
--------------------Configuration: t_stack - Win32 Debug-------------------- Compiling... t_stack.cpp d:\document\vs\vs\1998\t_stack\t_stack\t_stack.cpp(14) : error C2664: '__thiscall stack_s::stack_s(const class stack_s &)' : cannot convert parameter 1 from 'class i_error *' to 'const class stack_s &' Reason: cannot convert from 'class i_error *' to 'const class stack_s' No constructor could take the source type, or constructor overload resolution was ambiguous Error executing cl.exe. T_stack.exe - 1 error(s), 0 warning(s)
C2664 になってしまう.
class stack_b { public: stack_b (i_error* i_err=NULL) { ie = &tmp_ie ; if(i_err != NULL) { ie = i_err ; } } protected: i_error tmp_ie ; i_error* ie ; } ; class stack_s : public stack_b { public: // stack_s (i_error* i_err=NULL) : stack_b (i_err) { ; } public: virtual bool push (c_tstring& s) ; virtual tstring pop (void) ; virtual tstring last (void) ; protected: s_tstring stck_s ; } ;
RC1047 , C2679
既存の VC 8 プロジェクトをビルドすると,うまくビルドできなくなっている.
https://itl.mydns.jp/i_Tools/Doc/blog/images/err_2004.txt
1>------ すべてのリビルド開始: プロジェクト: WatchPD, 構成: Debug Win32 ------ 1>リソースをコンパイルしています... 1>fatal error RC1047: too many -I# options, 'c:\DP340XPP\D_Drive\Develop\Lib\InkSDK.C80\include' 1>プロジェクト : error PRJ0002 : エラーの結果 1 が 'C:\Program Files (x86)\Microsoft Visual Studio 8\VC\bin\rc.exe' より返されました。 1>WatchPD - エラー 1、警告 0
先日サーバ環境を変更(共通ソースを DevS から DevX に)したことによる影響.
その時簡単にはテストしたがメインのプロジェクトでは確認していなかった.
RC1047 の原因は,インクルードパスが長すぎるみたい.
もう一つのエラー.
1>------ ビルド開始: プロジェクト: PlnCtrl, 構成: Debug Win32 ------ 1>ComUse06.cpp 1>\\devx\public\documents\develop\_.src\_yet\mouse.cxx(1819) : error C2679: 二項演算子 '<<' : 型 'const P2' の右オペランドを扱う演算子が見つかりません (または変換できません)。 1> c:\program files (x86)\microsoft visual studio 8\vc\include\ostream(656): 'std::basic_ostream<_Elem,_Traits> &std::operator <<<wchar_t,std::char_traits<wchar_t>>(std::basic_ostream<_Elem,_Traits> &,const char *)' の可能性があります。 1> with 1> [ 1> _Elem=wchar_t, 1> _Traits=std::char_traits<wchar_t> 1> ] 1>
こっちは暫くわからなかった.
afxDump で検索すると 先日書いた記事 が引っ掛かり…
#define afxDump std::terr
これが有効になる条件が間違っていた.
_AFXDLL ではなく _MFC_VER で判断する必要があった.
VS 2019 Raspberry Pi への接続で…
VS 2019 の「オプション」-「クロスプラットフォーム」-…-「リモートヘッダー…」の「更新」を選択すると,
エラーが発生しました。Could not connect to the remote system or the connection was lost。詳細については、C:\Users\Iwao\AppData\Local\Temp\vslinux_header_update_log.txt を参照してください。トラブルシューティングについては、https://aka.ms/AA23jat をご覧ください。
SSH コマンドで接続しようとするとやはり接続できない.IP では可能.
Microsoft Windows [Version 10.0.18362.418] (c) 2019 Microsoft Corporation. All rights reserved. C:\Users\Iwao>ssh -l pi raspberrypi ssh: Could not resolve hostname raspberrypi: \202\273\202\314\202\346\202\244\202\310\203z\203X\203g\202\315\225s\226\276\202\305\202\267\201B C:\Users\Iwao>ssh -l pi 192.168.1.36 pi@192.168.1.36's password: Linux raspberrypi 4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Tue Nov 12 17:04:32 2019 SSH is enabled and the default password for the 'pi' user has not been changed. This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password. pi@raspberrypi:~ $
VC 10 以降で C2146 C4430
共通のソースなどが入っているサーバ WSS が壊れたので,他に逃がして「T:ドライブ」として参照するようにした.
VC のディレクトリの設定を DevS より下に T:\ を追加.
その時,VC 10 以降の次のファイルを編集してビルドが通らなくなってしまった.
C:\Users\Iwao\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp. … .user.props
1>------ ビルド開始: プロジェクト: DmpC, 構成: Debug Win32 ------ 1> StdAfx.cpp 1> _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h) 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(290): error C2146: 構文エラー : ';' が、識別子 'PVOID64' の前に必要です。 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(290): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(8992): error C2146: 構文エラー : ';' が、識別子 'Buffer' の前に必要です。 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(8992): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(8992): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
原因は DX90SDK の Include で,間違って追加した次のものを削除して対応.
T:\Develop\Lib\DX90SDK\Include;
VS 2019 インストール
Win10 環境に VS 2005 ~ 2019 までをインストール.
XP でも動作する exe を作成する には,「プロジェクトのプロパティ」-「プラットフォーム ツールセット」を「Visual Studio 2017 – Windows XP (v141_xp)」に.
------ ビルド開始: プロジェクト: i3DV, 構成: Release Win32 ------ C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Platforms\Win32\PlatformToolsets\v141_xp\Toolset.targets(39,5): warning MSB8051: Windows XP をターゲットとするサポートは非推奨であり、Visual Studio の将来のリリースで提供されなくなります。詳細については、https://go.microsoft.com/fwlink/?linkid=2023588 をご覧ください。 StdAfx.cpp _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h) ChildFrm.cpp \\devs\documents\develop\_.src\__iwao\xml_ms_.hxx(17): warning C4192: 'ISequentialStream' を自動的に除外し、タイプ ライブラリ 'msxml6.dll' をインポートします \\devs\documents\develop\_.src\__iwao\xml_ms_.hxx(17): warning C4192: '_FILETIME' を自動的に除外し、タイプ ライブラリ 'msxml6.dll' をインポートします i3DV.cpp i3DVDoc.cpp i3DVView.cpp MainFrm.cpp ... コードを生成中... C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\include\sal.h(2866): warning RC4005: '__useHeader' : redefinition C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\include\sal.h(2876): warning RC4005: '__on_failure' : redefinition i3DV142.vcxproj -> c:\Temp\i_Tools\i3DV\Release.142\Win32\i3DV.exe プロジェクト "i3DV142.vcxproj" のビルドが終了しました。 ========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
「Visual Studio 2019 (v142)」に戻してビルドすると,
------ ビルド開始: プロジェクト: i3DV, 構成: Release Win32 ------ StdAfx.cpp C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.20.27508\atlmfc\include\afx.h(62): fatal error C1083: include ファイルを開けません。'new.h':No such file or directory プロジェクト "i3DV142.vcxproj" のビルドが終了しました -- 失敗。 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
「Windows SDK バージョン」が「7.0」になっているので「10.0 (最新のインストールされているバージョン)」に.
VS 2013 インストールに失敗
Win10 に,以前ダウンロードした VS 2013 iso でインストールしようとすると途中で失敗する.
ja_visual_studio_professional_2013_with_update_5_x86_dvd_6815755.iso
丁度一年前にダウンロードしたもので,ファイルサイズは 3.71 GB .
検索すると,
VS 2013 Professional insatlation problem with microsoft visual studio 2013 vsgraphics helper dependencies incorrect function
どうも iso が壊れている?みたいで,もう一度落とし直した.
ファイル名は同じだがサイズが異なる.
もう一度インストールしてみるとうまくいった.
コンパイルエラー C2664
次の様になっている _UNICODE のプロジェクトでエラー.
//#include “messbar.hxx”
#include “i_dib_bg.hxx”
#include “itls_tmp.hxx”
--------------------構成: Tc_i_DIB - Win32 Release-------------------- コンパイル中... Tc_i_DIB.cpp \\DevS\Documents\Develop\_.SRC\__CPR_\_s_func.hxx(71) : error C2664: 'wcscpy' : 1 番目の引数を 'char *' から 'unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。 \\DevS\Documents\Develop\_.SRC\__CPR_\_s_func.hxx(72) : error C2664: 'wcslen' : 1 番目の引数を 'const char *' から 'const unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。 \\DevS\Documents\Develop\_.SRC\__CPR_\_s_func.hxx(88) : error C2664: 'wcsncpy' : 1 番目の引数を 'char *' から 'unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。 \\DevS\Documents\Develop\_.SRC\__CPR_\_s_func.hxx(105) : error C2664: 'wcscat' : 1 番目の引数を 'char *' から 'unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。 \\DevS\Documents\Develop\_.SRC\__CPR_\_s_func.hxx(106) : error C2664: 'wcslen' : 1 番目の引数を 'const char *' から 'const unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。 \\DevS\Documents\Develop\_.SRC\__CPR_\_s_func.hxx(106) : error C2664: 'wcslen' : 1 番目の引数を 'char *' から 'const unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。 \\DevS\Documents\Develop\_.SRC\__CPR_\_s_func.hxx(127) : error C2664: 'wcsncat' : 1 番目の引数を 'char *' から 'unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。 \\DevS\Documents\Develop\_.SRC\__CPR_\_s_func.hxx(128) : error C2664: 'wcslen' : 1 番目の引数を 'const char *' から 'const unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。 \\DevS\Documents\Develop\_.SRC\__CPR_\_s_func.hxx(128) : error C2664: 'wcslen' : 1 番目の引数を 'char *' から 'const unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。 \\DevS\Documents\Develop\_.SRC\__CPR_\_s_func.hxx(171) : error C2664: '_wcslwr' : 1 番目の引数を 'char *' から 'unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。 \\DevS\Documents\Develop\_.SRC\__CPR_\_s_func.hxx(186) : error C2664: '_wcsupr' : 1 番目の引数を 'char *' から 'unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。 \\DevS\Documents\Develop\_.SRC\__CPR_\_s_func.hxx(211) : error C2664: '_wgetenv' : 1 番目の引数を 'const char *' から 'const unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。 \\DevS\Documents\Develop\_.SRC\__CPR_\_s_func.hxx(235) : error C2664: '_wcreat' : 1 番目の引数を 'const char *' から 'const unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。 \\DevS\Documents\Develop\_.SRC\__CPR_\_s_func.hxx(259) : error C2664: '_wfopen' : 1 番目の引数を 'const char *' から 'const unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。 \\DevS\Documents\Develop\_.SRC\__CPR_\ttox.hxx(32) : error C2664: 'wcstoul' : 1 番目の引数を 'const char *' から 'const unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。 \\DevS\Documents\Develop\_.SRC\__CPR_\ttox.hxx(32) : fatal error C1903: 直前のエラーを修復できません; コンパイルを中止します。 cl.exe の実行エラー Tc_i_DIB.exe - エラー 16、警告 0
_MBCS にすると OK .
また,コメントにした “messbar.hxx” のインクルードを外すと OK .
エラーは UNICODE 版の関数を使用しているのに char を与えているというもの.
wcscpy を呼び出すときの引数を char* ではなく wchar_t* にすれば良い.
または,_MBCS ,_UNICODE 共に動作する様に _tcscpy の様な関数と TCHAR を使用する.
2019/01/31
今回エラーになったのは次の様なコード.
bool TcsCpy (LPTSTR dst,size_t sizeD,LPCTSTR src)
{
if (sizeD == 0) { return false ; }
bool rs = true ;
#if(_MSC_VER >= 1400)
{
errno_t err = _tcscpy_s (dst,sizeD, src) ;
if (err != 0) { rs = false ; }
}
#else
{
_tcscpy (dst, src) ;
if (sizeD < _tcslen(src)) { rs = false ; }
}
#endif
return rs ;
}
原因は _UNICODE が定義 されていて UNICODE が定義されていない ことによるもの.
ビルド環境?によってこれらの #define が矛盾してしまうことがある.
Windows.h をインクルードする前に両方が定義されている必要がある.
今回は自前の def_bmp.hxx の先頭に,i_define.hxx をインクルードすることで対応.
i_define.hxx 内では,次の様にしている.
// (VS8)\VC\AtlMFC\Include\AfxV_W32.h #ifdef _MSC_VER #ifdef _UNICODE #ifndef UNICODE #define UNICODE // UNICODE is used by Windows headers #endif #endif #ifdef UNICODE #ifndef _UNICODE #define _UNICODE // _UNICODE is used by C-runtime/MFC headers #endif #endif #endif
2020/09
i_def_aw.hxx を用意.
コンソール AP での define
コンソール AP で C2065 C2059
コンソール AP で,ビルドすると
--------------------構成: T_S_xxx - Win32 Debug-------------------- コンパイル中... T_S_xxx.cpp \\devs\documents\develop\_.src\_yet\winmfc.hxx(68) : error C2065: 'CListCtrl' : 定義されていない識別子です。 \\devs\documents\develop\_.src\_yet\winmfc.hxx(68) : error C2065: 'ctrl' : 定義されていない識別子です。 \\devs\documents\develop\_.src\_yet\winmfc.hxx(68) : error C2059: 構文エラー : 'const' \\devs\documents\develop\_.src\_yet\winmfc.hxx(68) : error C2143: 構文エラー : ';' が '{' の前に必要です。 \\devs\documents\develop\_.src\_yet\winmfc.hxx(68) : error C2447: '<L_PROPERTY>' : 関数ヘッダがありません (旧形式の仮引数リスト?) ... \\devs\documents\develop\_.src\_yet\list.hxx(159) : error C2061: 構文エラー : 識別子 'CListCtrl' がシンタックスエラーを起こしました。 \\devs\documents\develop\_.src\_yet\list.hxx(169) : error C2061: 構文エラー : 識別子 'CListCtrl' がシンタックスエラーを起こしました。 ... \\devs\documents\develop\_.src\...\.....cpp(2017) : fatal error C1903: 直前のエラーを修復できません; コンパイルを中止します。 cl.exe の実行エラー T_S_xxx.exe - エラー 24、警告 0
#include <AfxCmn.h> を追加.
空のコンソール AP で C2065 C2146
空のコンソール AP プロジェクトで,ビルドすると
--------------------構成: MkBG_up - Win32 Debug-------------------- コンパイル中... MkBG_up.cpp \\devs\documents\develop\_.src\__cpr_\straryfn.hxx(254) : error C2065: 'MessageCon' : 定義されていない識別子です。 \\devs\documents\develop\_.src\__cpr_\straryfn.hxx(254) : error C2146: 構文エラー : ';' が、識別子 'bar' の前に必要です。 \\devs\documents\develop\_.src\__cpr_\straryfn.hxx(254) : error C2065: 'bar' : 定義されていない識別子です。 \\devs\documents\develop\_.src\__cpr_\straryfn.hxx(258) : error C2228: '.SetBarInc' : 左側がクラス、構造体、共用体ではありません。 \\devs\documents\develop\_.src\__iwao\messbar.hxx(23) : warning C4005: 'MessageBar' : マクロが再定義されました。 s:\develop\vc_test\_3d\mkbg_up\mkbg_up.cpp(19) : 'MessageBar' の前の定義を確認してください \\devs\documents\develop\_.src\__cpr_\openfile.hxx(56) : error C2146: 構文エラー : ';' が、識別子 'bar' の前に必要です。 \\devs\documents\develop\_.src\__cpr_\openfile.hxx(66) : error C2228: '.SetBarInc' : 左側がクラス、構造体、共用体ではありません。 \\devs\documents\develop\_.src\__iwao\enumfile.hxx(342) : error C2146: 構文エラー : ';' が、識別子 'bar' の前に必要です。 \\devs\documents\develop\_.src\__iwao\enumfile.hxx(346) : error C2228: '.SetBarInc' : 左側がクラス、構造体、共用体ではありません。 \\devs\documents\develop\_.src\__iwao\enumfile.hxx(412) : error C2146: 構文エラー : ';' が、識別子 'bar' の前に必要です。 \\devs\documents\develop\_.src\__iwao\enumfile.hxx(419) : error C2228: '.SetBarMax' : 左側がクラス、構造体、共用体ではありません。 \\devs\documents\develop\_.src\__iwao\enumfile.hxx(420) : error C2228: '.SetBarInc' : 左側がクラス、構造体、共用体ではありません。 .... \\devs\documents\develop\_.src\__iwao\f_copyfn.hxx(66) : error C2146: 構文エラー : ';' が、識別子 'bar' の前に必要です。 \\devs\documents\develop\_.src\__iwao\f_copyfn.hxx(67) : error C2228: '.SetBar' : 左側がクラス、構造体、共用体ではありません。 \\devs\documents\develop\_.src\__iwao\f_copyfn.hxx(68) : error C2228: '.SetBar' : 左側がクラス、構造体、共用体ではありません。 \\devs\documents\develop\_.src\__iwao\f_copyfn.hxx(72) : error C2228: '.SetBarInc' : 左側がクラス、構造体、共用体ではありません。 cl.exe の実行エラー MkBG_up.exe - エラー 53、警告 1
リビルドすると通る.
「プリコンパイル済みヘッダーを自動的に使用」になっているためで,
「プリコンパイル済みヘッダを使用しない」にするか,pch を正しく指定する.
半年ほど前にも同じ記事を書いてた.