ホーム » VS 2010 –

VS 2010 –」カテゴリーアーカイブ

2024年6月
 1
2345678
9101112131415
16171819202122
23242526272829
30  

カテゴリー

アーカイブ

ブログ統計情報

  • 84,908 アクセス


mfc140ud.dll が見つからない …

「mfc140u.dll が見つからない…」の場合は
Microsoft Visual C++ 再頒布可能パッケージ


VC 2019 でデバッグビルドして実行すると,
—————————
Test.exe – システム エラー
—————————
mfc140ud.dll が見つからないため、コードの実行を続行できません。プログラムを再インストールすると、この問題が解決する可能性があります。
—————————
OK
—————————
VCRUNTIME140D.dll が見つからないため、コードの実行を続行できません。
ファイル名の所は MSVCP140D.dll などもある.
また exe は VC 2015 以降でデバッグビルドしたもの.


原因はわかっている.先日 VC 2022 のアップデートがあった.
その時 Win11 環境はうまくできたが Win10 環境では何故か失敗したため.
Microsoft.VisualCpp.Redist.14 をインストールできませんでした
どうしたものか…

「VS Installer」の「VS 2022」で「変更」を選択,そのまま進めるとダウンロード,インストールが始まった.
「VS Installer」の「VS 2022」で「変更」を選択
「修復」の方が良かったみたいだが …


「再起動が必要」の画面になり,その前にデバッグ版 exe を試すとうまく起動した.
「再起動が必要」

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

高 DPI 環境での CToolBar

vC 6 MFC プロジェクトを VC 2010 以降に更新すると,高 DPI 環境でツールバーがうまくない.
VC 10 以降でビルドした exe で,ツールバーが大きくならない
CMFCToolBar であれば OK .


個人的には 2005/06 に作成したコードを改良したものを使用している.
どこを参考にしたのかはちょっとわからない.
MFCによるWindows95プログラミング」や「INSIDE VISUAL C++ 5TH ED」などと思う.
それを簡単に利用できる様にできないかと…


コードは次の様な感じ.

BOOL	ToolBar__Resize	(CToolBar* toolBar,UINT idr)
{
	double	dpi_s = 1. ;
	{
		dpi_s = ::GetDPI_scale(toolBar->GetSafeHwnd()) ;	//  ::GetDpiForWindow() / 96.
		}
	if (dpi_s == 1.) {
		return	TRUE ;
		}
	CToolBarCtrl&	tbCtrl = toolBar->GetToolBarCtrl() ;
	CSize	btnSize(0,0) ;
	CRect	bdrRect(0,0,0,0) ;
	{	//  ボタンなどのサイズを取得
		DWORD	dwSize = tbCtrl.GetButtonSize() ;
		{
			btnSize.cx = LOWORD(dwSize) ;
			btnSize.cy = HIWORD(dwSize) ;
			}
		bdrRect        = toolBar->GetBorders() ;
		}
	CSize	newBtnSize = btnSize ;
	CRect	newBdrRect = bdrRect ;
	{	//  サイズを調整
		newBtnSize.cx    = int(btnSize.cx    *dpi_s) ;
		newBtnSize.cy    = int(btnSize.cy    *dpi_s) ;
		newBdrRect.left  = int(bdrRect.left  *dpi_s) ;
		newBdrRect.top   = int(bdrRect.top   *dpi_s) ;
		newBdrRect.right = int(bdrRect.right *dpi_s) ;
		newBdrRect.bottom= int(bdrRect.bottom*dpi_s) ;
		}
	{	//  サイズを指定
		tbCtrl.SetButtonSize(newBtnSize) ;
		toolBar->SetBorders(newBdrRect) ;
		}
	return	TRUE ;
	}

CToolBarCtrl  SetButtonSize
ツールバーボタンのビットマップのリサイズはまだ書換えができていない.
https://itl.mish.work/i_Tools/Doc/blog/migrate/Test0603.zip

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VC 6 から VC 2019 への移行

今回は VC 6 ds? の VC 2019 への更新.
VS 2022 では,VC 6 からのアップグレードがなくなった


VS 2019 で dsw を開き 2019 に更新.
設定は VC 8 の時の手順とほとんど変わらない(設定値が微妙に異なる部分あり).
出力ディレクトリなどを「c:\Temp\…\$(ProjectName)\$(Configuration).142\」に.
VC 2019 出力ファイル
「文字セット」を「Unicode 文字セットを使用する」に.
VC 2019 文字セット
「プリコンパイル済み…」を「$(IntDir)$(TargetName).pch」に.
VC 2019  プリコンパイル済みヘッダ
「C/C++」の「出力ファイル」を「$(IntDir)」に.
VC 2019 C/C++ 出力ファイル
「リンカ」の「出力ファイル」を「$(OutDir)$(ProjectName).exe」に.
VC 2019 リンカ 出力ファイル
「ブラウザ情報」の「出力ファイル」を「$(OutDir)$(ProjectName).bsc」に.
VC 2019 ブラウザ情報 出力ファイル


そのままビルドすると,デバッグ版では D8016 エラーになる.
「C/C++」-「すべてのオプション」の「関数レベルでリンクする」をブランクに.
「関数レベルでリンクする」をブランクに


https://itl.mish.work/i_Tools/Doc/blog/migrate/Test0526.zip

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VirusTotal Trojan 472047

最近 ViruaTotal で,VC 2022 ビルドの exe が引っ掛かる様になった気がする.

Antiy-AVL          GrayWare/Win32.Wacapew
Arcabit            Trojan.Lazy.D733EF [many]
BitDefender        Gen:Variant.Lazy.472047
Emsisoft           Gen:Variant.Lazy.472047 (B)
GData              Gen:Variant.Lazy.474792
MAX                Malware (ai Score=87)
MaxSecure          Trojan.Malware.121218.susgen
McAfee             GenericRXWN-PP!71DE1C7042EF
Rising             Trojan.Generic@AI.83 (RDML:km3T2NBP/pqn91WCd2xwaA)
Skyhigh (SWG)      GenericRXWN-PP!71DE1C7042EF
Trellix (FireEye)  Gen:Variant.Lazy.472047
VIPRE              Gen:Variant.Lazy.472047

VirusTotal   Trojan  472014
VC 2015 や 2017 でビルドしたものはほぼ大丈夫だが,2019 や 2022 ではうまくない.
また,以前は検出されなかったものが,引っ掛かる様になったものもある.
誤検知と思われるが,どうしたものか…

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

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

VirusTotal  VC 2022 17.6
VC 2019 などでビルドしたものは問題ない.また VC 2022 更新前のものも問題なかった.


今まで VS の更新版が出てすぐにそれでビルドすることは少なかった.
テストが不十分なこともあり,リリース用は主に VC 2017 を使用している.
更新版によっては,この様なことがあるのかもしれない.
落ち着くまでしばらく時間がかかるのか?

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

.NET ZipFile C++/CLI

ZipFile クラスのサンプル を C++/CLI で.
Win32 コンソール AP としてプロジェクトを作成.
CPP を次の様に変更.

#include	<stdio.h>
#include	<tchar.h>

//	using	System;
//	using	System.IO.Compression;
#using  	<System.dll>
#using		<System.IO.Compression.FileSystem.dll>

//	class Program
//	{
//		static void Main(string[] args)
//		{

int _tmain(int argc, _TCHAR* argv[])
{
//			string  startPath	= @"./start";
//			string  zipPath  	= @"./result.zip";
//			string  extractPath	= @"./extract";
		System::String^	startPath	= _T("./start") ;
		System::String^	zipPath  	= _T("./result.zip") ;
		System::String^	extractPath	= _T("./extract") ;

//		                         ZipFile. CreateFromDirectory(startPath, zipPath);
		System::IO::Compression::ZipFile::CreateFromDirectory(startPath, zipPath);

//		                         ZipFile. ExtractToDirectory(zipPath, extractPath);
		System::IO::Compression::ZipFile::ExtractToDirectory(zipPath, extractPath);

	return 0;
	}

//			}
//		}

そのままビルドすると…

1>------ ビルド開始: プロジェクト: T_ZIP_C, 構成: Debug Win32 ------
1>  T_ZIP_C.cpp
1>d:\document\vs\vs\2012\t_clr\t_zip_c\t_zip_c.cpp(6): fatal error C1190: マネージ ターゲット コードには '/clr' が必要です。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

fatal error C1190: マネージ ターゲット コードには '/clr' が必要です。
プロジェクトの設定で「/clr」に.

1>------ ビルド開始: プロジェクト: T_ZIP_C, 構成: Debug Win32 ------
1>  T_ZIP_C.cpp
1>T_ZIP_C.cpp(7): fatal error C1107: アセンブリ 'System.IO.Compression.FileSystem.dll' がみつかりませんでした: /AI または LIBPATH 環境変数を使用してアセンブリ検索パスを指定してください。
========== ビルド: 0 正常終了、1 失敗、3 更新不要、0 スキップ ==========

「追加の #using ディレクトリ」に dll の場所を指定して通る様にはなったが,これで良いかがわからない.
fatal error C1107: アセンブリ 'System.IO.Compression.FileSystem.dll' がみつかりませんでした:


ほとんど何も入っていない環境で実行すると,

---------------------------
T_ZIP_C.exe - システム エラー
---------------------------
MSVCR110.dll が見つからないため、コードの実行を続行できません。プログラムを再インストールすると、この問題が解決する可能性があります。 
---------------------------
OK   
---------------------------

MSVCR110.dll が見つからないため、コードの実行を続行できません。
VC 2013 や 2015 でビルドしたものも試してみたが,この環境では実行できなかった.
対応するものを入れる必要があるのか?
https://jml.mish.work/index.php/cpp/ref-vcredist-xxx-exe.html


zip_CLI.hxx

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

.NET ZipFile C#

今まで Windows で zip を扱う部分で Shell を利用 してきた.
その時,存在は知っていたが,手を付けてなかった .NET を利用したものを調べることに…


サンプルは次の所にある.
ZipFile クラス
.NET Framework 4.5 以降なので VS 2012 で C# のプロジェクトを作成.
Program.cs をサンプルの様に変更してビルドすると…

1>------ ビルド開始: プロジェクト: T_ZIP, 構成: Debug Any CPU ------
1>D:\Document\VS\VS\2012\T_CLR\T_ZIP\Program.cs(12,9,12,16): error CS0103: 名前 'ZipFile' は現在のコンテキスト内に存在しません。
1>D:\Document\VS\VS\2012\T_CLR\T_ZIP\Program.cs(14,9,14,16): error CS0103: 名前 'ZipFile' は現在のコンテキスト内に存在しません。
========== ビルド: 0 正常終了、1 失敗、1 更新不要、0 スキップ ==========

ZipFile のビルドで error CS0103
そこにも書かれているが System.IO.Compression.FileSystem を追加する必要がある.
「 System.IO.Compression.FileSystem 」の追加
…\bin\…\start\ に,幾つかのファイルをコビー.
exe を実行すると,result.zip と …\extract\ 以下にファイルが解凍される.
再度実行する場合は result.zip と extract\ を削除する必要がある.
'result.zip' は既に存在します


ディレクトリ区切りの ‘\’ を ‘/’ に変更する必要があるが,Ubuntu でも同様に実行可能.
Ubuntu 環境で ZipFile クラスのサンプルを実行

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

MFC AP で .NET の利用

MFC ダイアログ AP を C++/CLI に.
VC 2010 で,MFC ダイアログベースのスケルトンを作成.
リストボックスを追加して,コントロールの変数を割り当て.
プロジェクトの「プロパティ」で「共通言語ランタイム サポート(/clr)」に変更.
ダイアログのソースに次のものを追加.

#include	"enumfile.hxx"
#include	"vtst_MFC.hxx"
#include	"str_CLI.hxx"

#using		<System.dll>
#using		<mscorlib.dll>

OnInitDialog に次のコードを追加.

	{
		v_tstring	files = ::EnumFiles(_T("./"),_T("*.*")) ;
		::ToListBox(files,&m_CtrlListFiles) ;
		}
	{
		array<System::String^>^ gfile = System::IO::Directory::GetFiles(_T("./"));
		v_tstring	files ;
		for (int i = 0; i<gfile->Length; i++) {
			tstring	file = ::to_tstring(gfile[i]) ;
			files.push_back(file) ;
			}
		::ToListBox(files,&m_CtrlListFiles) ;
		}

MFC AP に「共通言語ランタイム サポート(/clr)」追加


「共通言語ランタイム サポート(/clr)」とすることで良いならば,コンソール AP ではどうなのか?
空のコンソール AP を作成して,次の様なコード.

#include	"enumfile.hxx"
#include	"str_CLI.hxx"

#using  	<System.dll>

bool	test	(c_tstring& str)
{
	tstring	fold_ = str ;
	{
		if (::File_IsDirectory(fold_))	{	;				}
		else				{	fold_ = ::Path_GetDir(fold_) ;	}
		}
	std::terr << fold_ << std::endl ;
	{
		v_tstring	files = ::EnumFiles(fold_,_T("*.*")) ;
		for (size_t index=0 ; index<files.size() ; index++) {
			std::terr << files[index] << std::endl ;
			}
		}
	{
		System::String^	fold = ::to_gcString(fold_) ;
		array<System::String^>^ gfile = System::IO::Directory::GetFiles(fold);
		for (int i = 0; i<gfile->Length; i++) {
			System::String^	file = gfile[i] ;
			System::Console::WriteLine(file) ;
			}
		}
	return	true ;
	}

int _tmain(int argc, _TCHAR* argv[])
{
	::test(_T("./")) ;
	return 0;
	}

Win32 コンソール AP C++  /clr に
::GetOpenFileName使用 した 方法 も可能だったが…
C++/CLI コンソール AP で GetOpenFileName を使用
::SHBrowseForFolder では,止まってしまう?


プロジェクトの作成で「CLR コンソール アプリケーション」として,main 関数を次の様にしたもの.

int main(array<System::String ^> ^args)
{
	{
	//	::call_func(argc,argv) ;
		::call_func() ;
		}
	{
		::test(_T("Test")) ;
		}
	::ask_wait() ;
	return 0;
	}

これは,ビルドするとよくわからないエラー.

1>------ ビルド開始: プロジェクト: T_CLR_2, 構成: Debug Win32 ------
1>  T_CLR_2.cpp
1>  EnumFile.hxx MessageBar  No Support
1>  .NETFramework,Version=v4.0.AssemblyAttributes.cpp
1>T_CLR_2.obj : error LNK2028: 未解決のトークン (0A000665) "extern "C" unsigned long __stdcall CommDlgExtendedError(void)" (?CommDlgExtendedError@@$$J10YGKXZ) が関数 "class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __cdecl FD_GetOpenFile(struct HWND__ *,wchar_t const *,wchar_t const *,wchar_t const *)" (?FD_GetOpenFile@@$$FYA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@PB_W11@Z) で参照されました。
1>T_CLR_2.obj : error LNK2028: 未解決のトークン (0A000695) "extern "C" int __stdcall SHGetPathFromIDListW(struct _ITEMIDLIST const *,wchar_t *)" (?SHGetPathFromIDListW@@$$J18YGHPBU_ITEMIDLIST@@PA_W@Z) が関数 "class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __cdecl SH_GetPathFromIDList(struct _ITEMIDLIST const *)" (?SH_GetPathFromIDList@@$$FYA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PBU_ITEMIDLIST@@@Z) で参照されました。
1>T_CLR_2.obj : error LNK2028: 未解決のトークン (0A00069F) "extern "C" void __stdcall CoTaskMemFree(void *)" (?CoTaskMemFree@@$$J14YGXPAX@Z) が関数 "class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __cdecl Browse_Folder(struct HWND__ *,wchar_t const *,wchar_t const *)" (?Browse_Folder@@$$FYA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@PB_W1@Z) で参照されました。
1>T_CLR_2.obj : error LNK2028: 未解決のトークン (0A0006B0) "extern "C" struct HWND__ * __stdcall FindWindowW(wchar_t const *,wchar_t const *)" (?FindWindowW@@$$J18YGPAUHWND__@@PB_W0@Z) が関数 "struct HWND__ * __cdecl GetConsoleHwnd(void)" (?GetConsoleHwnd@@$$FYAPAUHWND__@@XZ) で参照されました。
1>T_CLR_2.obj : error LNK2028: 未解決のトークン (0A00070A) "extern "C" struct _ITEMIDLIST * __stdcall SHBrowseForFolderW(struct _browseinfoW *)" (?SHBrowseForFolderW@@$$J14YGPAU_ITEMIDLIST@@PAU_browseinfoW@@@Z) が関数 "class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __cdecl Browse_Folder(struct HWND__ *,wchar_t const *,wchar_t const *)" (?Browse_Folder@@$$FYA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@PB_W1@Z) で参照されました。
1>T_CLR_2.obj : error LNK2028: 未解決のトークン (0A000710) "extern "C" int __stdcall GetOpenFileNameW(struct tagOFNW *)" (?GetOpenFileNameW@@$$J14YGHPAUtagOFNW@@@Z) が関数 "class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __cdecl FD_GetOpenFile(struct HWND__ *,wchar_t const *,wchar_t const *,wchar_t const *)" (?FD_GetOpenFile@@$$FYA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@PB_W11@Z) で参照されました。
1>T_CLR_2.obj : error LNK2028: 未解決のトークン (0A000741) "extern "C" long __stdcall SendMessageW(struct HWND__ *,unsigned int,unsigned int,long)" (?SendMessageW@@$$J216YGJPAUHWND__@@IIJ@Z) が関数 "extern "C" long __cdecl SendMessage(struct HWND__ *,unsigned int,unsigned int,long)" (?SendMessage@@$$J0YAJPAUHWND__@@IIJ@Z) で参照されました。
1>T_CLR_2.obj : error LNK2019: 未解決の外部シンボル "extern "C" long __stdcall SendMessageW(struct HWND__ *,unsigned int,unsigned int,long)" (?SendMessageW@@$$J216YGJPAUHWND__@@IIJ@Z) が関数 "extern "C" long __cdecl SendMessage(struct HWND__ *,unsigned int,unsigned int,long)" (?SendMessage@@$$J0YAJPAUHWND__@@IIJ@Z) で参照されました。
1>T_CLR_2.obj : error LNK2019: 未解決の外部シンボル "extern "C" int __stdcall SHGetPathFromIDListW(struct _ITEMIDLIST const *,wchar_t *)" (?SHGetPathFromIDListW@@$$J18YGHPBU_ITEMIDLIST@@PA_W@Z) が関数 "class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __cdecl SH_GetPathFromIDList(struct _ITEMIDLIST const *)" (?SH_GetPathFromIDList@@$$FYA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PBU_ITEMIDLIST@@@Z) で参照されました。
1>T_CLR_2.obj : error LNK2019: 未解決の外部シンボル "extern "C" void __stdcall CoTaskMemFree(void *)" (?CoTaskMemFree@@$$J14YGXPAX@Z) が関数 "class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __cdecl Browse_Folder(struct HWND__ *,wchar_t const *,wchar_t const *)" (?Browse_Folder@@$$FYA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@PB_W1@Z) で参照されました。
1>T_CLR_2.obj : error LNK2019: 未解決の外部シンボル "extern "C" struct _ITEMIDLIST * __stdcall SHBrowseForFolderW(struct _browseinfoW *)" (?SHBrowseForFolderW@@$$J14YGPAU_ITEMIDLIST@@PAU_browseinfoW@@@Z) が関数 "class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __cdecl Browse_Folder(struct HWND__ *,wchar_t const *,wchar_t const *)" (?Browse_Folder@@$$FYA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@PB_W1@Z) で参照されました。
1>T_CLR_2.obj : error LNK2019: 未解決の外部シンボル "extern "C" unsigned long __stdcall CommDlgExtendedError(void)" (?CommDlgExtendedError@@$$J10YGKXZ) が関数 "class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __cdecl FD_GetOpenFile(struct HWND__ *,wchar_t const *,wchar_t const *,wchar_t const *)" (?FD_GetOpenFile@@$$FYA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@PB_W11@Z) で参照されました。
1>T_CLR_2.obj : error LNK2019: 未解決の外部シンボル "extern "C" int __stdcall GetOpenFileNameW(struct tagOFNW *)" (?GetOpenFileNameW@@$$J14YGHPAUtagOFNW@@@Z) が関数 "class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __cdecl FD_GetOpenFile(struct HWND__ *,wchar_t const *,wchar_t const *,wchar_t const *)" (?FD_GetOpenFile@@$$FYA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@PB_W11@Z) で参照されました。
1>T_CLR_2.obj : error LNK2019: 未解決の外部シンボル "extern "C" struct HWND__ * __stdcall FindWindowW(wchar_t const *,wchar_t const *)" (?FindWindowW@@$$J18YGPAUHWND__@@PB_W0@Z) が関数 "struct HWND__ * __cdecl GetConsoleHwnd(void)" (?GetConsoleHwnd@@$$FYAPAUHWND__@@XZ) で参照されました。
1>D:\Document\VS\VS\2010\T_CLI\Debug\T_CLR_2.exe : fatal error LNK1120: 外部参照 14 が未解決です。
========== ビルド: 0 正常終了、1 失敗、4 更新不要、0 スキップ ==========

どこかを設定を設定すれば良いのかもしれないが,ちょっとわからない.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

「空のソリューション」がない

Win11 環境の VS 2022 の「新規作成」-「プロジェクト」で「空のソリューション」が表示されない.
VS 2022  「空のソリューション」が表示されない
VS 2019 や Win10 環境の VS 2022 では正しく表示される.


検索する と,どうもその様なことがあるみたい.
どうすると確実なのかはわからないが「Visual Studio Installer」で「変更」すれば良さそう.
「データの保存と処理」-「Azure Data Lake …」のチェックを外して「変更」して,表示されるようになった.
VS Installer  「変更」

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

MDI exe が動作しない?

Win10 Insider Preview 21H1 環境で,幾つかの exe がうまく動作しない.
引数が正しくありません。
VC 8 でビルドした exe は OK .VC 10 以降は NG のものがある.
SDI exe は大丈夫そうで,MDI exe はすべてではないが NG のものが多い.
タイミングとしては,3D データを読み込んだ後,ウィンドウに表示する前.


2021/07/12
一度「開く」ダイアログを表示するとその後はうまく動作する.


SDI exe であっても,VC 14 MFC スタティックだとうまくない?
MFC をスタティックリンクした exe でうまく動作しない
これはプロジェクトの設定がまずかったためで,別の記事に


2021/04/01
ちょっとわからないので,リモートデバッグの環境を作成することに.
MSDN Visual Studio での C++ プロジェクトのリモート デバッグ
リモートツールをダウンロードして,インストール.「スタート」から「Remote Debugger」を起動.
VS 2017 Remote Debugger
リモート側で exe を実行して,ホスト側で「アタッチ」.
VS でリモートのプロセスにアタッチ


2021/04/02
原因は,CRecentFileList::Add を通った時 ::CoInitinalize が呼び出されていないため.
CRecentFileList::Add  0x800401f0:CoInitialize は呼び出されていません
どうも MFC 10 から?変わったみたい.
MS C++ executable just started failing
MFC application crashing in ProcessShellCommand() when file to open specified on command line
それでも,なぜ環境によっては表面化しないのか?


CRecentFileList::Add で Win7 以降の「ジャンプリスト」に登録(::SHAddToRecentDocs )する様になった.
Win10 20H2 でも現象は発生した.2004 では問題ない.


対応としては InitInstance の最初に以下を追加.

	// OLE ライブラリを初期化します。
	if (!AfxOleInit()) {
		AfxMessageBox(_T("OLE の初期化に失敗しました。")) ;
		return	FALSE ;
		}

2021/04/06
2016/夏頃の Win10 で,その様になるものが存在したみたい.
その頃は T90Chi + VC 2015 + i3DV でやっていたと思うが,気づかなかった?

Is this 投稿 useful? Useful Useless 1 of 1 people say this 投稿 is useful.

VC 14 デバッグ MFC にステップイン

VC 2015 で MFC を使用した SDI.exe をデバッグしていると,MFC のコードにステップインできない?
入っている他の VC で試すと VC 2013 まではうまく機能している.
検索しても,これはという内容には引っ掛からなかった?


アプリケーションクラスの CG3toMApp::InitInstance() を抜ける時,そのままステップ実行していると…
mfc140ud.i386.pdb は読み込まれていません
「Microsoft Symbol Servers」にチェックを付けて「読み込み」.
MFC ソース内のデバッグができる様になった.


設定としては「ツール」-「オプション」の中の「デバッグ」-「シンボル」.
「ツール」-「オプション」-「デバッグ」-「シンボル」


2022/02
%TEMP% では消えてしまうので,シンボルキャッシュの場所を変更している.
VC 2017 シンボルキャッシュの場所
VC フォールバック 設定


https://itl.mish.work/Iwao/Doc/other/vs/
https://jml.mish.work/index.php/cpp/vs-install.html

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VC フォールバック 設定

以前から設定している情報のまとめ


VC 10 以降 フォールバックの設定
「ツール」-「オプション」-「テキスト エディター」-「C/C++」-「詳細」.
VC 「フォールバック」の設定
*.ipch,*.sdf,*.VC.db などを指定フォルダ以下に作成するように変更.


VC 7 以降 exe などをプロジェクトのソースなどとは別の所に生成するために.
VC 出力ディレクトリ
c:\Temp\$(ProjectName)\$(ConfigurationName).070
c:\Temp\$(ProjectName)\$(ConfigurationName).080\$(PlatformName)\
c:\Temp\$(ProjectName)\$(ConfigurationName).090\$(PlatformName)\
c:\Temp\$(ProjectName)\$(Configuration).100\$(Platform)\
c:\Temp\$(ProjectName)\$(Configuration).140\$(Platform)\
c:\Temp\Test_3D\$(ProjectName)\$(Configuration).100\


https://mish.work/Iwao/Doc/other/vs/
https://mish.work/joomla/index.php/cpp/vs-install.html

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VC 2010 ドキュメントのプレビュー

サムネイル void CXxxDoc::OnDrawThumbnail(CDC& dc, LPRECT lprcBounds)
プレビュー void CXxxView::OnDraw(CDC* pDC)

プレビューの方はそれなりに動作している様だが,サムネイルの方はちょっと動きが違う様な?

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Visual Studio 2010 SP1

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

MFC Visual Studio 2010 SP1

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VC 2010 $(IncludePath)

Microsoft.Cpp.Xxxx.user.props の場所
C:\Users\(UserName)\AppData\Local\Microsoft\MSBuild\v4.0
http://msdn.microsoft.com/ja-jp/library/ee855621.aspx

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

MSB6006

ビルドで MSB6006 のエラーが発生するようになってしまった.

—— ビルド開始: プロジェクト: XxxXxXxx, 構成: Release x64 ——
XxxXxXxx.vcxproj -> \XxxXXDocumentsXxxxxxxXXXXXxxXxXxxx64_R10XxxXxXxx.exe
—— ビルド開始: プロジェクト: XxxXxXxx, 構成: Release Win32 ——
XxxXxXxx.vcxproj -> \XxxXXDocumentsXxxxxxxXXXXXxxXxXxxx86_R10XxxXxXxx.exe
C:Program Files (x86)MSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(562,5): error MSB6006: "mt.exe" はコード 31 を伴って終了しました。
========== ビルド: 2 正常終了、1 失敗、0 更新不要、0 スキップ ==========

リビルドしても効果なし.


ファイルサーバも含め再起動をかけたら正しくビルドできるようになった.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

MFC ファイルハンドラの登録で MSB3075

ビルド時に以下のエラーとなる.


—— ビルド開始: プロジェクト: ???Handlers, 構成: Debug Win32 ——
???Handlers.vcxproj -> C:\Users\???\Documents\Visual Studio 2010\Projects\???\Debug\???Handlers.dll
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(732,5): warning MSB3075: コマンド “regsvr32 /s “C:\Users\???\Documents\Visual Studio 2010\Projects\???\Debug\???Handlers.dll”” はコード 5 で終了しました。このコマンドを実行するための十分な権限があるか確認してください。
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(744,5): error MSB8011: 出力の登録に失敗しました。ユーザーごとのリダイレクトを有効にするか、引き上げられたアクセス許可を使用して、コマンド プロンプトからコンポーネントを登録してください。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========


VS 2010 を「管理者として実行」して起動する.
または,「管理者として実行」した「コマンドプロンプト」での「RegSvr32」.
 
通常の「コマンドプロンプト」では以下のエラーとなる.
[Window Title]
RegSvr32
[Content]
モジュール “C:\Users\???\Documents\Visual Studio 2010\Projects\???\Debug\???Handlers.dll” は読み込まれましたが、DllRegisterServer への呼び出しはエラー コード 0x80070005 により失敗しました。
この問題の詳細については、エラー コードを検索語として入力してオンラインで検索してください。
run as administrator

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VC 2010 クラスウィザード

メニューの「プロジェクト」-「クラスウィザード」
Ctrl」+「Shift」+「X

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

MFC 10 再起動マネージャ

再起動マネージャのサポートの追加
http://msdn.microsoft.com/ja-jp/library/dd465232(v=VS.100).aspx

CXxxxApp::CXxxxApp()
{
#if (_MFC_VER >= 0x0A00)
     m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS ;
#endif
}

AppCore.cpp  CWinApp::CWinApp(LPCTSTR lpszAppName)
m_nAutosaveInterval = 5 * 60 * 1000; // default autosave interval is 5 minutes (only has effect if autosave flag is set)


2021/11
https://mish.myds.me/wordpress/dev/2021/11/19/restart-manager/

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.