Iwao myds

dev.mish.work へ移行しました.

この画面は、簡易表示です

VC 2022 ビルドでエラー

VC 2022 でビルドしようとすると,次の様なエラー.
—————————
Microsoft Visual Studio
—————————
オブジェクト参照がオブジェクト インスタンスに設定されていません。
—————————
OK
—————————
オブジェクト参照がオブジェクト インスタンスに設定されていません。
プロジェクトの設定などを見直しても特に怪しい部分はなさそう.
ビルド時に生成される幾つかのファイルを手動で削除しても特に変わらない.


さっきまで動作していた VC 2019 も同様のエラーに.
以前うまく動作しているはずのプロジェクトをコピーして,ビルドしようとしても同様.
こうなると,プロジェクトの設定ではなく,環境っぽい.


PC を再起動してうまく動作する様になった.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


…\System32\MicrosoftEdgeCP.exe

…\System32\MicrosoftEdgeCP.exe が存在するのに,stat などでうまく読み取れない.


ファイルが存在しているかどうかをチェックするために,CFileStatus などを利用している.
CFileStatus::GetStatus() で,幾つかのファイルが正しくチェックできない.
コードをデバッガで追いかけていくと,::FindFirstFile で INVALID_HANDLE_VALUE となってしまう.
検索 すると次の様なものがあった.
FindFirstFile関数はx64環境においてシステムファイルが検索できない?
x86 の場合次のものを呼出して切替える必要があるみたい.
Wow64DisableWow64FsRedirection
Wow64RevertWow64FsRedirection
File System Redirector
FindFirstFile ... INVALID_HANDLE_VALUE


今回 ::GetFileVersionInfo から始まって いろいろとあったのでメモ.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


VC 14 以降での stat.c の場所

VC 14 以降,<sys/stat.h> 関係が大きく変更されている?
CFileStatus でアサート


今回 stat 関数内をデバッグしようとしていて,ソースの場所がすぐにわからなかった.

#ifdef		_MSC_VER
#define		s_stat		struct	_stati64
#define		TSTAT		_tstati64
#else
#define		s_stat		struct	stat
#define		TSTAT		stat
#endif

VC 12 以前は,(VS)\VC\crt\src\ 以下に存在する.


VC で,#include <sys/stat.h> としている所を「右クリック」-「ドキュメント<sys/stat.h>を開く」.
その位置を幾つか上に行って,Include の並びに Source があり,その対応する所に存在する.
VC 14 以降の C ランタイムのソースの場所
VC 2015 以降のどれかで対応がつくと,それ以外でも対応したもの(10.0.?????.0)が開かれる?


この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


NAS OpenVPN サーバ設定

以前 ASUS ルータ設定 したが,最近安定しないので NAS で設定した.
OpenVPN の設定手順は次の様なもの.
1. VPN サーバで OpenVPN の有効化と設定.
2. .ovpn ファイルの出力.
3. .ovpn ファイルの編集.
4. OpenVPN が NAS に到達できる様に,ルータやファイアウォールを設定.
5. OpenVPN クライアント で .ovpn ファイルを取り込み.
6. クライアントから「接続」.


Synology NAS
「パッケージセンター」で「VPN Server」を「インストール」.
Synology NAS VPN Server
追加された「VPN Server」を起動.
「OpenVPN」を選んで「OpenVPN サーバーを有効にする」にチェック.
この時「ポート」は「1194」から変更(例えば 51234 )して,「適用」.
Synology NAS OpenVPN 設定
これで「エクスポート設定」が押せるようになる.
出力した .ovpn を「メモ帳」などで開いて編集.
先頭の方にある次の行の「YOUR_SERVER_IP」を変更.
remote YOUR_SERVER_IP 51234
remote 27.92.xxx.xxx 51234
DDNS を使用している場合は xxx.myds.me などの指定も可能.
Synology NAS  .ovpn ファイル
私の場合,動作確認のために 192.168.0.xxx の .ovpn も用意している.
OpenVPN  スマートフォンで .ovpn の取り込み
OpenVPN クライアントでの接続時の「ユーザ名」などは,NAS のユーザ情報が利用される.
ルータのポートの設定は次の様なものを追加.
Synology NAS  OpenVPN  ポートマッピング


ASUSTOR NAS
「App Central」で「VPN Server」を「インストール」.
ASUSTOR NAS  VPN Server
「VPN Server」を起動して「OpenVPN」を「ON」に.
「権限」で「ユーザー」を「追加」,「適用」.
「設定」-「OpenVPN」で「ポート」などを変更し「構成ファイルのダウンロード」.
ASUSTOR NAS  OpenVPN 設定
.ovpn 内の OPENVPN_SERVER_IP を変更.
後は同様に OpenVPN クライアントで取り込めば良い.


QNAP NAS
「App Center」で「QVPN Service」を「インストール」.
QNAP NAS  QVPN Service
「QVPN Service 3」を開いて「OpenVPN」の設定.
QNAP NAS OpenVPN 設定
「設定ファイルのダウンロード」したファイルを OpenVPN クライアントへ.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


::GetFileVersionInfo

以前から使用している FileVer.?xx が MFC に依存しているので,その書き直し.


Win8 の頃だったと思うが,OS のバージョンの取得方法が面倒になった.
システム バージョンの取得
オペレーティング システムのバージョン
欲しいのは動作 OS のバージョン文字列なので WinVer.exe などから取得する様にしていた.


で,書き換えようと思って調べていると…
exe のプロパティで表示されるファイルバージョンと異なることに気付いた.
where.exe のバージョン情報
::GetFileVersionInfo で取得すると次の文字列が返ってくる.
10.0.19041.1826 (WinBuild.160101.0800)


次の様なコードを書いて ::GetFileVersionInfo で返されるものをダンプ.

{
	DWORD	VerHandle   = 0 ;
	DWORD	VerInfoSize = 0 ;
	v_char	VerData ;
	VerInfoSize = ::GetFileVersionInfoSize(LPTSTR(file.c_str()),&VerHandle) ;
	VerData.resize(VerInfoSize*2) ;
	if (::GetFileVersionInfo(LPTSTR(file.c_str()),VerHandle,VerInfoSize,&VerData[0])) {
		tstring	tmp_path = ::Get_i_Tools_tmp_date() ;
		tstring	tmp_name = ::Path_AddLastSP(tmp_path) + ::Path_GetName(file) + _T(".dmp") ;
		::v_c_Save(tmp_name.c_str(),VerData) ;
		}
	}

::GetFileVersionInfo で返されるデータのダンプ


ファイルバージョンの取得.

{
	/*
		VS_VERSION_INFO VERSIONINFO
		 FILEVERSION 1,53,2022,1
		 PRODUCTVERSION 1,53,2022,1
		 FILEFLAGSMASK 0x3fL
		#ifdef _DEBUG
		 FILEFLAGS 0x1L
		#else
		 FILEFLAGS 0x0L
		#endif
		 FILEOS 0x4L
		 FILETYPE 0x1L
		 FILESUBTYPE 0x0L
		BEGIN
		    BLOCK "StringFileInfo"
		    BEGIN
		        BLOCK "041104b0"
		        BEGIN
		            VALUE "Comments", "\0"
		            VALUE "CompanyName", "\0"
		            VALUE "FileDescription", "3D Viewer\0"
		            VALUE "FileVersion", "1, 53, 2022, 1\0"
		            VALUE "InternalName", "i3DV\0"
		            VALUE "LegalCopyright", "Copyright (C) 2013-2022  I. Nakagawa\0"
		            VALUE "LegalTrademarks", "\0"
		            VALUE "OriginalFilename", "i3DV.exe\0"
		            VALUE "PrivateBuild", "\0"
		            VALUE "ProductName", "i_Tools\0"
		            VALUE "ProductVersion", "1, 53, 2022, 1\0"
		            VALUE "SpecialBuild", "\0"
		        END
		    END
		    BLOCK "VarFileInfo"
		    BEGIN
		        VALUE "Translation", 0x411, 1200
		    END
		END
	*/
	tstring	StringFileInfo ;
	{
		struct	LANGANDCODEPAGE	{
			WORD	wLanguage ;		//	0x411
			WORD	wCodePage ;		//	1200	0x4b0
			}	*lpTranslate	= NULL ;
		UINT	lenT = 0 ;
		if (::VerQueryValue(&VerData[0],_T("\\VarFileInfo\\Translation"),(void**)&lpTranslate,&lenT)) {
			tstring	lang_cp_str =	::u32to0t(lpTranslate->wLanguage,16,4) +
			                     	::u32to0t(lpTranslate->wCodePage,16,4) ;		//	"041104b0"
			StringFileInfo = _T("\\StringFileInfo\\") + lang_cp_str + _T("\\") ;
			}
		}
	{
		UINT	lenFV = 0 ;
		TCHAR*	lpFV  = NULL ;
		tstring	name  = _T("FileVersion") ;
		if (::VerQueryValue(&VerData[0],LPTSTR((StringFileInfo+name).c_str()),(void**)&lpFV,&lenFV)) {
			std::terr << lpFV	<<	std::endl ;
			}
		}
	}
この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


QNAP NAS Notes Station 3

Twitter を見ていたら「Notes Station」というものがあった.
QNAP NAS Notes Station
Synology NAS の「Note Station」と似た様なものと思われる.
インストール方法などは次の所.
https://www.qnap.com/ja-jp/how-to/tutorial/article/notes-station-3
Edge に Notes Station 3 Clipper を追加.
PC からだと次の様な指定でアクセスできる.
http://(QNAP NAS):8080/ns/
スマートフォン用は Qnote3

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


ADM 4.1.0.RJ52 の更新で …

ADM 4.0 から 4.1 への更新で?,Web サーバなどが動作しなくなった.
「Web Center」で「Web サーバー」を設定.
ADM 4.1  「Webサーバー」の設定
これで //as.mish.work/ でアクセスできるようにはなった.


が,WordPressJoomla! がうまく動作していない.
「Apache HTTP Server」に切替えれば良いものと思うが,エラーになってしまう.
ADM 4.1  Webサーバー  「Apache HTTP Server」でエラー


WordPress は,それぞれの記事の表示で「404 Not Found」となっていまう.
Joomla! は「グローバル設定」-「SEO設定」-「フレンドリURL」を「いいえ」で動作する様にはなる.


どこかの設定が足りないものと思うが,ちょっとわからないのでこのままとする.


「保存」した VirtualBox の環境が起動できない.
ADM 4.1  保存した VirtualBox 環境が起動しなくなった
「保存状態を破棄」して起動できた.


夜になって,ADM 4.1.0.RJ72 がリリースされている.
更新後,「Apache HTTP Server」を指定できることを確認.
WordPress と Joomla! はうまく機能する様になった.
ファームの不具合だった?

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


VC 2019 以降の include

%LOCALAPPDATA%\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props がない?


次の所は以前まとめたもの.VC 2010 以降は,これが引き継がれるものと思っていた.
VC include lib のパス
私の環境の VC 2022 で確認すると,ちゃんと引き継がれている.
VC 2022 プロパティ マネージャー
検索すると VC 2019 から Microsoft.Cpp.Win32.user.props は使用されなくなった?
Microsoft.Cpp.Win32.user.props file missing
Visual Studio プロジェクトの設定を共有または再利用する


VC Linux の include 設定

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  • カテゴリー:

MFC OnUpdate… が来ない?

自前の Doc::UpdateCommand で CCmdUI の処理を実装して,イベントが来なかった.
MFC OnUpdate... が来ない
原因は,範囲の指定が間違っていた.
ON_UPDATE_COMMAND_UI_RANGE (ID_Start, ID_End, OnUpdateCmd)
すぐに気づかなかったのでメモ.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  • カテゴリー:

vector<long> などを文字列に

std::vector<long> の文字列への変換.
何年も前に書いたコードで,使い方を忘れているのでそのまとめ.


次の様な関数を用意している.
template <class VX> tstring Vx_To_tstring(const VX& vx,LPCTSTR sp=_T(" "))
vxx_tstr.hxx  ::Vx_To_tstring
次の様な使い方で long の配列を文字列へ変換できる.
tstring vl_str = ::Vx_To_tstring<v_long>(long_ary) ;


クラスの配列のダンプ

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。



    top

    %d人のブロガーが「いいね」をつけました。