AS5202T 再セットアップ
やっとこの NAS 用の HDD が届いたのでもう一度最初からセットアップ.
今ある WD Red 1TB を外すために AS5202T をシャットダウン.
前回と同様 で「初期化されていません」を押して,画面の指示に従ってインストール.
今回は最初のインストールでは何も入れなかったので,Web サーバなども起動していない.
他に SSH なども有効になる様に設定.
SSH で接続しようとすると,
Microsoft Windows [Version 10.0.18362.720] (c) 2019 Microsoft Corporation. All rights reserved. C:\Users\Iwao>cd %TMP% C:\Users\Iwao\AppData\Local\Temp>ssh -l Iwao -p 22 192.168.1.75 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:7Hi9lqmKbdEhkCwGwU4j0fjj/PQCNQBfnNCIHKMACZA. Please contact your system administrator. Add correct host key in C:\\Users\\Iwao/.ssh/known_hosts to get rid of this message. Offending ECDSA key in C:\\Users\\Iwao/.ssh/known_hosts:16 ECDSA host key for 192.168.1.75 has changed and you have requested strict checking. Host key verification failed. C:\Users\Iwao\AppData\Local\Temp>
c:\Users\Iwao\.ssh\known_hosts を編集(192.168.1.75 の行を削除)して対応.
ここまでやっていろいろ見ていると,間違いを発見.RAID 0 になっている.
「設定」-「工場出荷時設定」-「システム初期化」でもう一度やり直し.
「ワンクリックセットアップ」の画面で「バランスが取れている」を選択する必要があった.
「最大容量」だと RAID 0 .RAID 1 は「バランスが取れている」にする.
退避しておいた VHD などをコピー.
VirtualBox と entware をインストール.
SSH 接続で gcc のインストール.
opkg install gcc
これで gcc も使える様になった.
2020/04/05
その後いろいろ試していて,また VirtualBox が止まる?現象があった.
同じファイルを PC から起動するのはうまくできる.
先日バックアップした DevX.vdi をコピーし直して起動させたらうまくいった.
VNC 接続で時刻を表示させて見ていると,少し止まったようになることがある.
昨日 RAID 1 で再セットアップした後,ディスクが動いていたのでそのグラフ.
AS5202T セットアップ – 6
DS116 からの WordPress の移行.
2017/01 は wordpress.com から DS115j に.2017/10 には DS115j から DS116 に移行している.
今回行うのは Synology NAS DS116 からで,どこまで動作する(移行できる)かのテスト.
DS116 側 の「ダッシュボード」で「ツール」-「エクスポート」.
「すべてのコンテンツ」を選んで「エクスポートファイルをダウンロード」.
AS5202T の「ダッシュボード」-「ツール」-「インポート」.
「WordPress」の所の「今すぐインストール」,「インポータの実行」.
「参照…」から xml ファイルを指定して「ファイルをアップロードしてインポート」すると,
WordPress のインポート エラーが発生しました。 アップロードしたファイルは php.ini で定義された upload_max_filesize を超過しています。
PHP 7.3 php.ini の upload_max_filesize は 2M になっている.xml は 6.3MB .
php.ini を編集しようかとも思ったが,PHP 7 を無効にすると PHP 5.6 になり 10MB になっている.
もう一度,xml の「ファイルをアップロードしてインポート」.
「添付ファイルをダウンロードしてインポートする」にチェックをつけて「実行」.
時間は 30 分程度かかった.
この記事を公開後,もう一度 Synology NAS で「エクスポート」,ASUSTOR NAS で「インポート」.
新しいこの記事は追加されるが,変更した以前の記事は反映されないみたい.
「All in One SEO Pack」プラグインを入れたタイミングかは不明だが,SEO 情報も移行できている.
xml には書かれているのでプラグインを入れた段階で反映されていたのかもしれない.
2022/01
php.ini を編集
WordPress の .htaccess で指定
AS5202T セットアップ – 5
先日 WordPress と Joomla! を入れたので,DS116 からの移行.
比較的簡単そうな Joomla! から.
検索すると J2XML というプラグインが出てくる.
使い方などは次の所に詳しく説明されている.
Joomla! 無料エクステンション『J2XML』で記事やカテゴリをエクスポート/インポート
インポートでうまくできなかった.
Cannot import a super user account [Super User].
エラーメッセージにある様に「Super User」を「はい」に変更.
「メニュー」などは反映されないので完全な切替はしばらく先になりそう.
2020/04/02
Synology NAS 側の記事を少し変更.
前回と同様に「エクスポート」,AS5020T の「インポート」でうまくいく.
AS5202T セットアップ – 3
SSH 接続を有効にするための設定
ADM の「サービス」-「端末」の「SSHサービスを有効にする」にチェック.
Win10 のコマンドプロンプトで次の様に入力 すると入れる.
ssh -l Iwao -p 22 192.168.1.75
Linux 環境でよく使っているコマンド.以前 Synology NAS でも調べたもの.
zip ,unzip ,7z すべて存在する.
convert もあり.
shutdown はない.
標準で入る PHP は 5.6 みたい.
App Central で PHP 7 をインストールすることで 7.3 になった.
また「インストール済み」の「PHP 7」の ON/OFF で切り替え可能.
AS5202T セットアップ – 2
先日の続き.
その後追加したもの.
アンチウィルスの ClamAV .
他に Linux Center .使い勝手は思っていたものと少し違った.
マニュアルなどは次の所.
https://www.asustor.com/ja/service/downloads?product_id=61#document
https://www.asustor.com/app_central/?type=&model=52xx,53xx
DDNS の設定は ASUSTOR Data Master (ADM) の「設定」-「手動接続」にある.
ASUSTOR の標準で用意されているものは「myasustor.com」.
IPv6 での設定はちょっとわからず.
次のリンクの様にアクセスできるようになる.
http://demosite.myasustor.com/
他にもいろいろ設定したいと思うが,場所やアプリがわからない.
Web 関係などはこの NAS 用に注文している HDD がそろってからの予定.
AS5202T セットアップ
先日届いていた AS5202T .それ用の HDD を注文したら納期がかかるみたい.
それで手元にあった WD Red 1TB を取り付けてセットアップしてみた.
NAS に取り付ける時,斜めになってしまうことがあるので注意が必要.
最初に ASUSTOR コントロールセンター をダウンロードして PC にインストール.
「初期化されていません」を押して,画面の指示に従って ADM をインストール.
Web もセットアップされていた.
NAS が動作することは確認できたので,メモリを 8GB に取り換え.
電源を入れると,一番上の青いランプが点灯,システムステータスのランプが点滅のままでうまく起動しない.
通常であればネットワークやハードディスクのランプが点滅や点灯するはず.
もう一度メモリを外して元の 2GB の状態にするとうまく起動する.
追加で 1 枚さして 6GB でもうまく起動.
2GB も交換して 4GB x 2 の状態で試すとうまく起動した.
メモリの挿し方が甘かった?
今回この機種を追加した目的の一つが VirtualBox .
App Central から VirtualBox と VirtualBox Extension Pack をインストール.
追加された VirtualBox アイコンをクリックすると新しくブラウザのウィンドウが開く.
この時のログインの ID がわからなかったが admin と admin で入れる.
https://www.asustor.com/en/online/College_topic?topic=249
https://forest.watch.impress.co.jp/docs/shseri/siranas/1023605.html
https://mdw-note.net/tips/setting-virtualbox-as3102t/
以前 PC で作成した Win10_LTSC.vdi を NAS の Public/VHD/Win10_LTSC にコピー.
それを使用する様に VirtualBox の仮想マシンを追加.
追加した仮想マシンを起動すると右上にプレビューが表示されている.
この仮想マシンは VNC サーバの設定がしてあるので,VNC ビューアから接続.
もう一つ確認したのが gcc .
App Central で entware を追加.
C:\Users\Iwao\AppData\Local\Temp>ssh -l Iwao -p 22 192.168.1.75 Password: Iwao@AS5202T:/volume1/home/Iwao $ gcc -sh: gcc: not found Iwao@AS5202T:/volume1/home/Iwao $ opkg opkg must have one sub-command argument usage: opkg [options...] sub-command [arguments...] where sub-command is one of: Package Manipulation: update Update list of available packages upgrade <pkgs> Upgrade packages install <pkgs> Install package(s) configure <pkgs> Configure unpacked package(s) remove <pkgs|regexp> Remove package(s) flag <flag> <pkgs> Flag package(s) <flag>=hold|noprune|user|ok|installed|unpacked (one per invocation) Informational Commands: ... Iwao@AS5202T:/volume1/home/Iwao $ opkg install gcc Installing gcc (7.4.0-5) to root... Downloading http://bin.entware.net/x64-k3.2/gcc_7.4.0-5_x64-3.2.ipk Installing zlib (1.2.11-3) to root... Downloading http://bin.entware.net/x64-k3.2/zlib_1.2.11-3_x64-3.2.ipk Installing libiconv-full (1.11.1-4) to root... Downloading http://bin.entware.net/x64-k3.2/libiconv-full_1.11.1-4_x64-3.2.ipk Installing libintl-full (0.19.8.1-2) to root... Downloading http://bin.entware.net/x64-k3.2/libintl-full_0.19.8.1-2_x64-3.2.ipk Installing libbfd (2.27-1) to root... Downloading http://bin.entware.net/x64-k3.2/libbfd_2.27-1_x64-3.2.ipk Installing libopcodes (2.27-1) to root... Downloading http://bin.entware.net/x64-k3.2/libopcodes_2.27-1_x64-3.2.ipk Installing objdump (2.27-1) to root... Downloading http://bin.entware.net/x64-k3.2/objdump_2.27-1_x64-3.2.ipk Installing ar (2.27-1) to root... Downloading http://bin.entware.net/x64-k3.2/ar_2.27-1_x64-3.2.ipk Installing binutils (2.27-1) to root... Downloading http://bin.entware.net/x64-k3.2/binutils_2.27-1_x64-3.2.ipk Configuring zlib. Configuring libiconv-full. Configuring libintl-full. Configuring libbfd. Configuring libopcodes. Configuring objdump. Configuring ar. Configuring binutils. Configuring gcc. There are no *-dev packages in Entware(with few exceptions)! Please install headers as described in the wiki: https://github.com/Entware/Entware/wiki Iwao@AS5202T:/volume1/home/Iwao $ Iwao@AS5202T:/volume1/home/Iwao $ gcc /volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/x86_64-openwrt-linux-gnu/7.4.0/crt1.o: In function `_start': (.text+0x20): undefined reference to `main' collect2: error: ld returned 1 exit status Iwao@AS5202T:/volume1/home/Iwao $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/x86_64-openwrt-linux-gnu/7.4.0/lto-wrapper Target: x86_64-openwrt-linux-gnu Configured with: /media/ware3/Entware.2020.01/build_dir/target-x86_64_glibc-2.27/gcc-7.4.0/configure --target=x86_64-openwrt-linux --host=x86_64-openwrt-linux --build=x86_64-pc-linux-gnu --program-prefix= --program-suffix= --prefix=/opt --exec-prefix=/opt --bindir=/opt/bin --sbindir=/opt/sbin --libexecdir=/opt/lib --sysconfdir=/opt/etc --datadir=/opt/share --localstatedir=/opt/var --mandir=/opt/man --infodir=/opt/info --disable-nls 'CXXFLAGS_FOR_TARGET=-g -O2 -D_GLIBCXX_INCLUDE_NEXT_C_HEADERS' --build=x86_64-pc-linux-gnu --host=x86_64-openwrt-linux-gnu --target=x86_64-openwrt-linux-gnu --enable-languages=c,c++ --with-bugurl=https://dev.openwrt.org/ --with-pkgversion='OpenWrt GCC 7.4.0' --enable-shared --enable-__cxa_atexit --with-default-libstdcxx-abi=gcc4-compatible --enable-target-optspace --with-gnu-ld --with-specs='-Wl,-rpath=/opt/lib -Wl,--dynamic-linker=/opt/lib/ld-linux-x86-64.so.2' --with-boot-ldflags='static-libstdc++ -static-libgcc -Wl,-rpath=/opt/lib -Wl,--dynamic-linker=/opt/lib/ld-linux-x86-64.so.2' --disable-nls --disable-libsanitizer --disable-libvtv --disable-libcilkrts --disable-libmudflap --disable-libmpx --disable-multilib --disable-libgomp --disable-libquadmath --disable-libssp --disable-decimal-float --disable-libstdcxx-pch --with-host-libstdcxx=-lstdc++ --prefix=/opt --libexecdir=/opt/lib --with-local-prefix=/opt --with-stage1-ldflags='-lstdc++ -Wl,-rpath=/opt/lib -Wl,--dynamic-linker=/opt/lib/ld-linux-x86-64.so.2' --with-default-libstdcxx-abi=gcc4-compatible Thread model: posix gcc version 7.4.0 (OpenWrt GCC 7.4.0) COMPILER_PATH=/volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/x86_64-openwrt-linux-gnu/7.4.0/:/volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/ LIBRARY_PATH=/volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/x86_64-openwrt-linux-gnu/7.4.0/:/volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/:/lib/../lib64/:/usr/lib/../lib64/:/volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/x86_64-openwrt-linux-gnu/7.4.0/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-v' '-mtune=generic' '-march=x86-64' /volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/x86_64-openwrt-linux-gnu/7.4.0/collect2 -plugin /volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/x86_64-openwrt-linux-gnu/7.4.0/liblto_plugin.so -plugin-opt=/volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/x86_64-openwrt-linux-gnu/7.4.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccm1Y6FA.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/x86_64-openwrt-linux-gnu/7.4.0/crt1.o /volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/x86_64-openwrt-linux-gnu/7.4.0/crti.o /volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/x86_64-openwrt-linux-gnu/7.4.0/crtbegin.o -L/volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/x86_64-openwrt-linux-gnu/7.4.0 -L/volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc -L/lib/../lib64 -L/usr/lib/../lib64 -L/volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/x86_64-openwrt-linux-gnu/7.4.0/../../.. -rpath=/opt/lib --dynamic-linker=/opt/lib/ld-linux-x86-64.so.2 -lgcc_s -lc -lgcc_s /volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/x86_64-openwrt-linux-gnu/7.4.0/crtend.o /volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/x86_64-openwrt-linux-gnu/7.4.0/crtn.o /volume1/.@plugins/AppCentral/entware/opt/bin/../lib/gcc/x86_64-openwrt-linux-gnu/7.4.0/crt1.o: In function `_start': (.text+0x20): undefined reference to `main' collect2: error: ld returned 1 exit status Iwao@AS5202T:/volume1/home/Iwao $ Iwao@AS5202T:/volume1/home/Iwao $ ll total 12 drwxr-xr-x 2 Iwao users 4.0K Mar 16 18:27 ./ drwxr-xr-x 4 root root 4.0K Mar 16 15:19 ../ -rw------- 1 Iwao users 100 Mar 16 18:43 .ash_history Iwao@AS5202T:/volume1/home/Iwao $ mkdir test Iwao@AS5202T:/volume1/home/Iwao $ cd test Iwao@AS5202T:/volume1/home/Iwao/test $ cat > test.cpp int main () { return 2 ; } Iwao@AS5202T:/volume1/home/Iwao/test $ cat test.cpp int main () { return 2 ; } Iwao@AS5202T:/volume1/home/Iwao/test $ ls test.cpp Iwao@AS5202T:/volume1/home/Iwao/test $ g++ test.cpp Iwao@AS5202T:/volume1/home/Iwao/test $ ./a.out Iwao@AS5202T:/volume1/home/Iwao/test $ echo $? 2 Iwao@AS5202T:/volume1/home/Iwao/test $ echo $? 0 Iwao@AS5202T:/volume1/home/Iwao/test $
#pragma message (” ~ “) の利用
先日からやっているコードの解析部分を単体テスト用に分割していると,
--------------------構成: prs_frml - Win32 Debug-------------------- コンパイル中... prs_frml.cpp c:\program files\microsoft visual studio\vc98\mfc\include\afxv_w32.h(14) : fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h> cl.exe の実行エラー prs_frml.exe - エラー 1、警告 0
「パッと見」でわかる時は良いが,今回はわかり難い.
そんな時に私が場所を限定していく手順.
次の様に影響していそうな所に #pragma message (” ~ “) を追加.
#pragma message ("pass 1") #include "StrAryTo.hxx" #pragma message ("pass 2") #ifdef _MSC_VER #ifdef _AFXDLL #else #ifndef afxDump #define afxDump std::terr #endif #endif #endif #pragma message ("pass 3")
今回は次の様になったので StrAyTo.hxx が原因とわかった.
pass 1 c:\program files\microsoft visual studio\vc98\mfc\include\afxv_w32.h(14) : fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
StrAryTo.hxx は CStringArray と std::vector<tstring> を相互変換するコード.
インクルードから外すことで対応.
MFC を使用しているソースなどの対応方法は次の所.
https://dev.mish.work/wordpress/2019/04/05/c1189-windows-h-already-included/
VirtualBox 6 VHD のサイズの拡大
Win7 の時に作成した VHD のサイズが 64 GB だったのでそれの拡張.
検索すると,探し方が悪いのか面倒な方法ばかり…
それで見つけたのが次の所.
https://blog.goo.ne.jp/ashm314/e/53afcf6f9356646d5556590cab11c013
これで VHD の大きさは大きくなるが,仮想マシンを起動すると変わっていない.
これに対応するには次の所.
https://www.atmarkit.co.jp/fwin2k/win2ktips/869vhdextend/vhdextend.html
Microsoft DiskPart バージョン 6.1.7601 Copyright (C) 1999-2008 Microsoft Corporation. コンピューター: VP-HBY DISKPART> list disk ディスク 状態 サイズ 空き ダイナ GPT ### ミック ------------ ------------- ------- ------- --- --- ディスク 0 オンライン 80 GB 16 GB DISKPART> list volume Volume ### Ltr Label Fs Type Size Status Info ---------- --- ----------- ---- ---------- ------- --------- -------- Volume 0 D CD-ROM 0 B メディアなし Volume 1 システムで予約済み NTFS Partition 100 MB 正常 システム Volume 2 C NTFS Partition 63 GB 正常 ブート DISKPART> select volume 2 ボリューム 2 が選択されました。 DISKPART> extend DiskPart はボリュームを正常に拡張しました。 DISKPART> list volume Volume ### Ltr Label Fs Type Size Status Info ---------- --- ----------- ---- ---------- ------- --------- -------- Volume 0 D CD-ROM 0 B メディアなし Volume 1 システムで予約済み NTFS Partition 100 MB 正常 システム * Volume 2 C NTFS Partition 79 GB 正常 ブート DISKPART>
2021/01/06
「仮想メディアマネージャー」を使用して,80 GB から 100 GB の拡張で 1 時間程度かかった.
実際のファイルサイズが 160 GB 程度になってしまっている.
diskpart による操作は特に問題ない.
Freespire 6 インストール
先日 Twitter で見かけてブックマークしておいたサイト.
https://www.freespirelinux.com/2020/02/freespire-60-released.html
2020/06/22 https://www.freespire.net/
時間が空いたので VirtualBox の環境にインストールしてみた.
ちょっと手順がわかりにくい部分があったのでメモ.
仮想マシンの作成.
仮想ハードディスクの作成.
ダウンロードした freespire-6.iso を選択.
仮想マシンの起動.
起動するとこんな感じ.
デスクトップにある「Install freespire 18.04」を開いてインストール開始.
インストーラの起動後,一番下に「日本語」がある.あとは表示に従い操作すれば OK .
日本語のフォルダが幾つかできているので変更.
LANG=C xdg-user-dirs-gtk-update
2020/05/06
glut インストール.
sudo apt install freeglut3 freeglut3-dev
Win10 IIS https 化
テスト環境の IIS を https 化しようと思い,いろいろと…
当然であるが「サイトバインドの追加」で「SSL 証明書」がない.
NAS では Let’s Encrypt を使用しているので調べると win-acme などがあるみたい.
そこから入った https://github.com/win-acme/win-acme/releases/ から落としてやってみたが…
「N」を選択して進めるがエラー.
C:\Users\Iwao\AppData\Local\Temp<c:\Users\Public\Documents\Tools\win-acme.v2.1.4.710.x64.trimmed\wacs.exe A simple Windows ACMEv2 client (WACS) Software version 2.1.4.710 (RELEASE, TRIMMED) ACME server https://acme-v02.api.letsencrypt.org/ IIS version 10.0 Running with administrator credentials Scheduled task not configured yet Please report issues at https://github.com/PKISharp/win-acme N: Create new certificate (simple for IIS) M: Create new certificate (full options) R: Run scheduled renewals (0 currently due) A: Manage renewals (0 total) O: More options... Q: Quit Please choose from the menu: n Running in mode: Interactive, Simple No sites with host bindings have been configured in IIS. Add one in the IIS Manager or choose the plugin 'Manual input' instead. Target plugin IIS aborted or failed N: Create new certificate (simple for IIS) M: Create new certificate (full options) R: Run scheduled renewals (0 currently due) A: Manage renewals (0 total) O: More options... Q: Quit Please choose from the menu:
何かの設定が足りないのか?ちょっとわからないので他の方法で…
自己署名証明書でやってみることに.
「IIS 自己署名証明書」で検索.
わかりやすかったのがここ.
Windows Server で自己署名 SSL 証明書を作成する手順
IIS マネージャーを使用した証明書の作成
IIS で SSL/TLS を 自己署名入り証明書 で 設定 する方法
これで https に対応できているかどうかのテストはできるので,今回はここまで.
いつも設定場所を忘れるので…
Microsoft VBScript 実行時エラー エラー ‘800a01ad’
ActiveX コンポーネントはオブジェクトを作成できません。
/_LIB_/L_Mainte.asp, 行 33
「アプリケーション プール」-「詳細設定」-「32 ビット アプリケーションの有効化」を「True」に.
C4244: ‘初期化中’: ‘INT_PTR’ から …
VC 2002 より前に作成した「ダイアログベース」のプロジェクトの場合 x64 対応に変更すると
XxxApp.cpp(73): warning C4244: ‘初期化中’: ‘INT_PTR’ から ‘int’ への変換です。データが失われる可能性があります。
生成されるスケルトンでは,アプリケーションクラスのダイアログの部分が次の様になっている.
CFBXtoMDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK) {
}
else if (nResponse == IDCANCEL) {
}
x86,x64 共に warning などを出なくするには,int となっている部分を INT_PTR に変更 する.
「MFC を使用しない」のエラー
’91 年に C で作成して,’95 年頃に C++ で書き直したコード.
その頃は MFC なしでも動作するようにコードを書いていた.
が,’06 頃の UNICODE 化で MFC に依存するようになってしまっている.
main 関数だけ用意して,対象の cpp をインクルードしてビルドすると,
--------------------構成: t_calc - Win32 Debug-------------------- コンパイル中... t_calc.cpp リンク中... nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) はすでに libcpd.lib(delop.obj) で定義されています nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部シンボル "__endthreadex" は未解決です nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部シンボル "__beginthreadex" は未解決です C:\Temp\Debug\Calc\t_calc\Debug.060/t_calc.exe : fatal error LNK1120: 外部参照 2 が未解決です。 link.exe の実行エラー t_calc.exe - エラー 4、警告 0
どこかで Afx.h など MFC のコードをインクルードしてしまっている.
インクルードを順に辿るとすぐ見つかるが,どう修正するか悩むところ.
MFC を必要とする場合は今まで通りで,不要な場合は新しいコードに切り替えるか?
#ifdef _MFC_VER #include <Afx.h> #else #include "_s_func.hxx" #endif
ある程度必要なコードは特定できたがまだ書き直してないコードもありそう.
_MFC_VER で切り替えようと思ったが,コンソール AP ではうまく機能しない.
How to detect “Use MFC” in preprocessor
_MFC_VER は Afx.h の中で間接的(AfxVer_.h)に定義されている.
使えるのは _AFXDLL のみ?
次の様な感じ?
#ifdef _MSC_VER #ifdef _AFXDLL #include <Afx.h> #else #include <Windows.h> #endif #endif
2020/02/14
ヘッダファイルで CString などを使用しているコードの部分は
#ifdef _MFC_VER CString ChangeString (LPCTSTR str) ; #endif
2020/09/25
コンソール AP での define
NAS g++ で a.out が作成されない?
warning はあるが,エラーの表示はない状態まで修正して g++ .
Iwao@DS116:~/gcc_test/Test/t_linux/t_calc$ g++ t_calc.cpp -Wall In file included from /volume1/public/C_Sync/GoogleD/Develop/_.SRC/_gcc/V2_FuncA.hxx:1:0, from Calc_16.cpp:46, from t_calc.cpp:29: /volume1/public/C_Sync/GoogleD/Develop/_.SRC/__CPR_/v2_funca.hxx: In constructor 'vd2_arc::vd2_arc()': /volume1/public/C_Sync/GoogleD/Develop/_.SRC/__CPR_/v2_funca.hxx:28:9: warning: 'vd2_arc::tc' will be initialized after [-Wreorder] double tc ; ^~ /volume1/public/C_Sync/GoogleD/Develop/_.SRC/__CPR_/v2_funca.hxx:27:9: warning: 'double vd2_arc::ts' [-Wreorder] double ts ; ^~ /volume1/public/C_Sync/GoogleD/Develop/_.SRC/__CPR_/v2_funca.hxx:23:2: warning: when initialized here [-Wreorder] vd2_arc () : lr(0) , tc(0) , ts(0) {} ^~~~~~~ /volume1/public/C_Sync/GoogleD/Develop/_.SRC/__CPR_/v2_funca.hxx: In function 'Vd2 get_point_pie(const Vd2&, const Vd2&, double, double)': /volume1/public/C_Sync/GoogleD/Develop/_.SRC/__CPR_/v2_funca.hxx:263:6: warning: variable 'lm' set but not used [-Wunused-but-set-variable] Vd2 lm = (le-ls) / 2 ; ^~ In file included from t_calc.cpp:29:0: Calc_16.cpp: In member function 'virtual int VarCnv::SetError(LPCTSTR, ...)': Calc_16.cpp:1319:7: warning: variable 'cnt' set but not used [-Wunused-but-set-variable] int cnt ; ^~~ Iwao@DS116:~/gcc_test/Test/t_linux/t_calc$ ls Calc_16.BAK Calc_16.cpp Calc_16.hpp t_calc.BAK t_calc.cpp t_calc.dsp Iwao@DS116:~/gcc_test/Test/t_linux/t_calc$ g++ t_calc.cpp Iwao@DS116:~/gcc_test/Test/t_linux/t_calc$ ls Calc_16.BAK Calc_16.cpp Calc_16.hpp t_calc.BAK t_calc.cpp t_calc.dsp Iwao@DS116:~/gcc_test/Test/t_linux/t_calc$ ll total 248 drwxrwxrwx+ 2 Iwao users 4096 Feb 6 11:46 . drwxrwxrwx+ 16 Iwao users 4096 Feb 6 10:18 .. -rwxrwxrwx+ 1 Iwao users 103036 Feb 6 11:45 Calc_16.BAK -rwxrwxrwx+ 1 Iwao users 103032 Feb 6 11:46 Calc_16.cpp -rwxrwxrwx+ 1 Iwao users 11608 Feb 5 18:53 Calc_16.hpp -rwxrwxrwx+ 1 Iwao users 2756 Feb 6 11:18 t_calc.BAK -rwxrwxrwx+ 1 Iwao users 2420 Feb 6 11:43 t_calc.cpp -rwxrwxrwx+ 1 Iwao users 4420 Feb 5 16:39 t_calc.dsp Iwao@DS116:~/gcc_test/Test/t_linux/t_calc$
なのに a.out が作成されない.
Raspberry Pi で同様に動かすと
pi@raspberrypi:~/projects/t_calc $ g++ t_calc.cpp In file included from t_calc.cpp:29: Calc_16.cpp: In function ‘int ExpDel_Bracket1(TCHAR*, size_t, int, int, char)’: Calc_16.cpp:2152:6: error: ‘_tcspbrk’ was not declared in this scope if (_tcspbrk(val,bracket)==NULL){ return FALSE ; } // ���ʂ����݂��Ȃ����͉������Ȃ� ^~~~~~~~ Calc_16.cpp:2152:6: note: suggested alternative: ‘wcspbrk’ if (_tcspbrk(val,bracket)==NULL){ return FALSE ; } // ���ʂ����݂��Ȃ����͉������Ȃ� ^~~~~~~~ wcspbrk Calc_16.cpp:2161:21: error: ‘_tcsrchr’ was not declared in this scope LPTSTR equStartB = _tcsrchr(tmpLeft,startB) ; // �ŏ��� ')' �ɑΉ����� '(' �̈ʒu�����߂� ^~~~~~~~ Calc_16.cpp:2161:21: note: suggested alternative: ‘_tcschr’ LPTSTR equStartB = _tcsrchr(tmpLeft,startB) ; // �ŏ��� ')' �ɑΉ����� '(' �̈ʒu�����߂� ^~~~~~~~ _tcschr pi@raspberrypi:~/projects/t_calc $
どうも ShiftJIS のコメントが邪魔してかエラーが表示されてないだけみたい.
未定義となっているので正しく宣言して対応.
次は warning .
.../v2_funca.hxx:28:9: warning: 'vd2_arc::tc' will be initialized after [-Wreorder] double tc ; .../v2_funca.hxx:27:9: warning: 'double vd2_arc::ts' [-Wreorder] double ts ; .../v2_funca.hxx:23:2: warning: when initialized here [-Wreorder] vd2_arc () : lr(0) , tc(0) , ts(0) {}
これは,クラス内の変数の宣言と初期化の順番が異なる場合のものらしい.
もう一つの [-Wunused-but-set-variable] は戻り値を使用していないもの.
warning: variable 'lm' set but not used [-Wunused-but-set-variable]
変数を削除して対応.
前後するが 先日のツール で ShiftJIS のソースを UTF-8 に.
Iwao@DS116:~/gcc_test/Test/t_linux/t_calc$ cd test_sj/ Iwao@DS116:~/gcc_test/Test/t_linux/t_calc/test_sj$ ls Calc_16.cpp Calc_16.hpp t_calc.BAK t_calc.cpp Iwao@DS116:~/gcc_test/Test/t_linux/t_calc/test_sj$ g++ t_calc.cpp -Wall Iwao@DS116:~/gcc_test/Test/t_linux/t_calc/test_sj$ ll total 132 drwxrwxrwx+ 2 Iwao users 4096 Feb 6 16:39 . drwxrwxrwx+ 3 Iwao users 4096 Feb 6 16:38 .. -rwxrwxrwx+ 1 Iwao users 103036 Feb 6 14:41 Calc_16.cpp -rwxrwxrwx+ 1 Iwao users 11608 Feb 5 18:53 Calc_16.hpp -rwxrwxrwx+ 1 Iwao users 1821 Feb 6 16:04 t_calc.BAK -rwxrwxrwx+ 1 Iwao users 1841 Feb 6 16:39 t_calc.cpp Iwao@DS116:~/gcc_test/Test/t_linux/t_calc/test_sj$ g++ t_calc.cpp -Wall -finput-charset=SJIS cc1plus: error: conversion from SJIS to UTF-8 not supported by iconv Iwao@DS116:~/gcc_test/Test/t_linux/t_calc/test_sj$ g++ t_calc.cpp -Wall In file included from t_calc.cpp:27:0: Calc_16.cpp: In function 'int ExpDel_Bracket1(TCHAR*, size_t, int, int, char)': Calc_16.cpp:2152:26: error: '_tcspbrk' was not declared in this scope if (_tcspbrk(val,bracket)==NULL){ return FALSE ; } // 括弧が存在しない時は何もしない ^ Iwao@DS116:~/gcc_test/Test/t_linux/t_calc/test_sj$ ll total 136 drwxrwxrwx+ 3 Iwao users 4096 Feb 6 16:46 . drwxrwxrwx+ 3 Iwao users 4096 Feb 6 16:38 .. -rwxrwxrwx+ 1 Iwao users 108716 Feb 6 14:41 Calc_16.cpp -rwxrwxrwx+ 1 Iwao users 12170 Feb 5 18:53 Calc_16.hpp drwxrwxrwx+ 2 Iwao users 4096 Feb 6 16:45 org -rwxrwxrwx+ 1 Iwao users 1841 Feb 6 16:39 t_calc.cpp Iwao@DS116:~/gcc_test/Test/t_linux/t_calc/test_sj$
エラーが表示される.
VC /LARGEADDRESSAWARE
64 ビットバイナリの作成に関して調べていて /LARGEADDRESSAWARE を見つけたのでメモ.
/LARGEADDRESSAWARE (大きいアドレスの処理)
これを有効にすると 64 ビット環境で 2 GB を超えるメモリを利用できるみたい.
プロジェクトの「プロパティ」-「構成プロパティ」-「リンカ」-「システム」-「大きいサイズのアドレス」
次の様なコードで動作を確認.
#include <iostream> #include "memstat.hxx" #include "gettickc.hxx" int _tmain (int argc, TCHAR* argv[]) { u_32 free_M = 0 ; { MemoryStatus ms ; std::tout << long(ms.GetPhysFree()/1024/1024) << std::endl ; free_M = u_32(ms.GetPhysFree ()/1024/1024) ; } { std::vector <void*> memAry(1024,(void*)NULL) ; u_32 index =0 ; u_32 allocTotal = 0 ; u_32 allocSize = free_M/2 ; u_32 ngCount = 0 ; for (index=0 ; index<free_M && ngCount<10 ; ) { if (allocSize == 0) { break ; } void* pAlloc = calloc(allocSize,1024*1024) ; if (pAlloc != NULL) { allocTotal += allocSize ; } else { allocSize /= 2 ; ngCount++ ; continue ; } MemoryStatus ms ; std::tout << allocSize << _T("\t") << allocTotal << _T("\t") << long(ms.GetPhysFree()/1024/1024) << std::endl ; free_M = u_32(ms.GetPhysFree ()/1024/1024) ; memAry.at(index) = pAlloc ; ::Sleep_ms(1000) ; index++ ; if (ngCount > 100) { break ; } } for (index=0 ; index<free_M ; index++) { void* pAlloc = memAry.at(index) ; free(pAlloc) ; } } return 0; }
/LARGEADDRESSAWARE を有効にすることで 4 GB まで確保できている.
Microsoft Windows [Version 10.0.18362.592] (c) 2019 Microsoft Corporation. All rights reserved. C:\Users\Iwao>C:\Temp\TestCPP\t_mem\t_m_stat\release.080\T_m_stat.exe 3845 961 961 3844 480 1441 3847 240 1681 3845 120 1801 3845 120 1921 3845 60 1981 3837 15 1996 3836 7 2003 3830 7 2010 3830 7 2017 3831 3 2020 3826 3 2023 3826 This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. C:\Users\Iwao>C:\Temp\TestCPP\t_mem\t_physf\release.080\T_PhysF.exe 3814 1907 1907 3814 953 2860 3801 476 3336 3799 238 3574 3799 119 3693 3800 119 3812 3790 119 3931 3789 59 3990 3788 29 4019 3792 14 4033 3787 14 4047 3787 7 4054 3787 7 4061 3786 3 4064 3778 3 4067 3781 3 4070 3781 3 4073 3781 This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. C:\Users\Iwao>
以下は,デバッグ版とリリース版での違い.
C:\Users\Iwao>C:\Temp\TestCPP\t_mem\t_physf\debug.080\T_PhysF.exe 4606 1151 1151 3461 1151 2302 2300 575 2877 1713 575 3452 1188 287 3739 915 143 3882 758 71 3953 671 35 3988 629 17 4005 600 17 4022 582 17 4039 554 8 4047 566 8 4055 554 8 4063 539 4 4067 527 C:\Users\Iwao>C:\Temp\TestCPP\t_mem\t_physf\release.080\T_PhysF.exe 4406 1101 1101 4394 1101 2202 4401 550 2752 4393 550 3302 4403 275 3577 4403 137 3714 4403 68 3782 4403 68 3850 4403 68 3918 4402 34 3952 4502 34 3986 4503 17 4003 4501 17 4020 4502 17 4037 4499 17 4054 4498 8 4062 4499 8 4070 4498 4 4074 4497 This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. C:\Users\Iwao>
2020/02/05
(VS)\VC\bin\EditBin.exe でも同様の設定ができるみたい.
EDITBIN リファレンス
“C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\editbin.exe” /LARGEADDRESSAWARE C:\Users\Iwao\AppData\Local\Temp\i_Tools.tmp\CopyNewF\20200204\T_Phys_L.exe
2020/02/14
確保したメモリのアドレスを表示する様にしてみた.
Microsoft Windows [Version 10.0.18362.657] (c) 2019 Microsoft Corporation. All rights reserved. C:\Users\Iwao>\\TestXP\C_Temp\TestCPP\T_mem\T_m_stat\Release.060\T_m_s_2.exe 2030 1015 1015 2030 0000000000878020 507 1522 2030 000000003ff83020 253 1775 2030 000000005fa90020 126 1901 2029 00000000772a7020 63 1964 2029 000000006f7a6020 15 1979 1950 00000000736b7020 15 1994 1947 0000000074f65020 7 2001 1949 0000000075e73020 7 2008 1949 000000007f0b6020 3 2011 1946 0000000074868020 3 2014 2007 0000000074b7d020 3 2017 2009 000000007658e020 3 2020 2010 0000000076890020 3 2023 2011 000000007f7cb020 3 2026 2012 000000007fada020 1 2027 2013 00000000005f2020 1 2028 2013 00000000745c8020 1 2029 2013 0000000076e05020 1 2030 2013 0000000076f14020 abnormal program termination C:\Users\Iwao>\\TestXP\C_Temp\TestCPP\T_mem\T_m_stat\Release.060\T_m_s_4.exe 1935 967 967 1935 000000000087a020 967 1934 1996 000000007fff7020 967 2901 1996 ffffffffbc70c020 483 3384 1995 000000003cf8e020 241 3625 1996 000000005b293020 120 3745 1997 000000006a3a8020 120 3865 1994 00000000772aa020 60 3925 1996 fffffffff8e1d020 30 3955 1996 0000000071bbc020 30 3985 1996 fffffffffca2c020 15 4000 1874 0000000074f66020 15 4015 1832 000000007eab8020 15 4030 1996 fffffffffe838020 7 4037 2102 00000000739cd020 7 4044 2139 0000000075e7e020 3 4047 2181 00000000740dc020 3 4050 2254 00000000743ed020 3 4053 2255 0000000074868020 3 4056 2255 0000000074b76020 3 4059 2261 0000000076583020 3 4062 2372 000000007689f020 3 4065 2371 000000007f9c0020 3 4068 2371 000000007fcd5020 3 4071 2371 ffffffffff743020 3 4074 2372 ffffffffffa50020 1 4075 2372 00000000006ec020 1 4076 2296 0000000076e04020 1 4077 2296 0000000076f19020 abnormal program termination C:\Users\Iwao>
Linux でのメモリの空き容量の取得
C++ のコードで Linux 環境でのメモリの使用状況 を知りたくなった.
コマンドでは free などがあるが,それと同等のものを取得する関数.
Iwao@DS116:~/gcc_test/Test/t_linux/T_mem/t_mem$ free -h
total used free shared buff/cache available
Mem: 1.0G 695M 29M 49M 281M 162M
Swap: 2.0G 1.0G 1.0G
Iwao@DS116:~/gcc_test/Test/t_linux/T_mem/t_mem$ cat /proc/meminfo
MemTotal: 1030632 kB
MemFree: 16720 kB
Buffers: 9392 kB
Cached: 203592 kB
SwapCached: 227532 kB
Active: 393336 kB
Inactive: 489268 kB
Active(anon): 322836 kB
Inactive(anon): 397436 kB
Active(file): 70500 kB
Inactive(file): 91832 kB
Unevictable: 1408 kB
Mlocked: 1408 kB
SwapTotal: 2097148 kB
SwapFree: 1060108 kB
Dirty: 200 kB
Writeback: 0 kB
AnonPages: 538800 kB
Mapped: 71992 kB
Shmem: 50524 kB
Slab: 89312 kB
SReclaimable: 17608 kB
SUnreclaim: 71704 kB
KernelStack: 4368 kB
PageTables: 14768 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2612464 kB
Committed_AS: 4943664 kB
VmallocTotal: 1039360 kB
VmallocUsed: 6916 kB
VmallocChunk: 961204 kB
Iwao@DS116:~/gcc_test/Test/t_linux/T_mem/t_mem$ ./a.out
16474112
1055367168
Iwao@DS116:~/gcc_test/Test/t_linux/T_mem/t_mem$ cat main.cpp
#include <iostream>
#include <sys/sysinfo.h>
int main ()
{
{
struct sysinfo meminfo ;
::sysinfo(&meminfo);
std::cout << meminfo.freeram << std::endl;
std::cout << meminfo.totalram << std::endl;
}
return 0;
}
Iwao@DS116:~/gcc_test/Test/t_linux/T_mem/t_mem$
最初 getrusage を見つけたが,マニュアルにある様にこの目的では使えない.値は 0 で返ってくる.
次に見つけたのが sysinfo .
Fedora や Raspberry Pi ,Synology NAS で動作することを確認.
- meminfo {...} sysinfo uptime 17198 __kernel_long_t - loads __kernel_ulong_t [3] [0] 35520 __kernel_ulong_t [1] 30240 __kernel_ulong_t [2] 26880 __kernel_ulong_t totalram 2078154752 __kernel_ulong_t freeram 107687936 __kernel_ulong_t sharedram 19849216 __kernel_ulong_t bufferram 145534976 __kernel_ulong_t totalswap 2227171328 __kernel_ulong_t freeswap 2206625792 __kernel_ulong_t procs 468 __u16 pad 0 __u16 totalhigh 0 __kernel_ulong_t freehigh 0 __kernel_ulong_t mem_unit 1 __u32 _f char [0]
VC 6 C2059 C2091 C2809 C2954
2001/11 作成のプロジェクトをビルドしたらよくわからないエラー.
--------------------構成: MsgStCon - Win32 Debug-------------------- コンパイル中... MsgStCon.cpp c:\program files\microsoft visual studio\vc98\include\memory(16) : error C2059: 構文エラー : 'string' c:\program files\microsoft visual studio\vc98\include\memory(17) : error C2091: 関数は関数を返せません。 c:\program files\microsoft visual studio\vc98\include\memory(17) : error C2809: 'operator new' に仮引数リストがありません。 c:\program files\microsoft visual studio\vc98\include\memory(20) : error C2954: テンプレートの定義はネストできません。 cl.exe の実行エラー MsgStCon.obj - エラー 4、警告 0
ソースの先頭付近に #include <memory> を追加.
#include "StdAfx.h" #include "MsgStCon.h" #include <memory> // ① OK #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #include <memory> // ② NG // ...
②の位置では現象は変わらず.①の位置に追加する必要がある.
2023/03/24
error C2061 , C2091 , C2809 , C2556
CEdit で文字列の最後を表示させる
エディットボックスに文字列が入りきらない場合に,文字列の最後の方を表示させる方法
例えば次のように UpdateData(FALSE) を呼び出すと CEdit::GetSel では開始位置と終了位置が 0 で戻される.
m_OutFolder = Copy_ccc.GetTarget().c_str() ; UpdateData(FALSE) ;
CEdit::SetSel で文字列の長さを指定することにより最後の位置を選択してその部分が表示されるようにする.
m_OutFolder = Copy_ccc.GetTarget().c_str() ; UpdateData(FALSE) ; int start = m_OutFolder.GetLength() ; int end = m_OutFolder.GetLength() ; m_CtrlOutFolder.SetSel(start,end) ;
int start = m_OutFolder.GetLength()-1 ; int end = m_OutFolder.GetLength()-0 ;
EN_NOHIDESEL を有効にする.
NAS のシャットダウン,再起動
Synology NAS なのであまり使用することはないが,SSH などで接続したコンソールから
シャットダウン | sudo shutdown -h now | sudo poweroff |
再起動 | sudo shutdown -r now | sudo reboot |
Synology NAS は,shutdown と poweroff ,reboot 共に可能 ASUSTOR NAS は, poweroff ,reboot が可能 QNAP NAS は,admin で入った端末から poweroff と reboot |
2020/12 poweroff ,reboot の追加.
https://dev.mish.work/wordpress/2020/12/01/nas-poweroff-reboot/
2021/09/03
NAS によって,起動中アプリのシャットダウン動作が異なるので注意が必要.
NAS の再起動などのスケージュール
漢字を含むソースのテスト – 2
前回のコードで,文字列の部分を #define で指定.
Iwao@DS116:~/gcc_test/Test/t_linux/cc_ml_2$ uconv -f SJIS cc_ml_2.cpp #include <clocale> #include <iostream> #include "i_define.hxx" #include "_tdefine.hxx" #include "ccc_mlg.hxx" #define Name_1_ _T("Name_1") #define Name_2_ _T("Name_2") #define Name_3_ _T("Name_3") #define Name_4_ _T("Name_4") #define Name_5_ _T("Name_5") #define Name_1J _T("名称 1") #define Name_2J _T("名称 2") #define Name_3J _T("名称 3") #define Name_4J _T("名称 4") #define Name_5J _T("名称 5") bool test (void) { { ccc_mlg* cm = ::get_ccc_mlg() ; { ccc_mlg_1 cm_1 ; cm_1.Name = Name_1_ ; cm_1.JPN = Name_1J ; ccc_mlg_1 cm_2 ; cm_2.Name = Name_2_ ; cm_2.JPN = Name_2J ; ccc_mlg_1 cm_3 ; cm_3.Name = Name_3_ ; cm_3.JPN = Name_3J ; ccc_mlg_1 cm_4 ; cm_4.Name = Name_4_ ; cm_4.JPN = Name_4J ; ccc_mlg_1 cm_5 ; cm_5.Name = Name_5_ ; cm_5.JPN = Name_5J ; cm->push_back(cm_1) ; cm->push_back(cm_2) ; cm->push_back(cm_3) ; cm->push_back(cm_4) ; cm->push_back(cm_5) ; } std::tout << ccc("Name_2") << std::endl ; } return true ; } int _tmain(int argc, TCHAR* argv[]) { _tsetlocale(LC_ALL,_T("")) ; test() ; return 0 ; } Iwao@DS116:~/gcc_test/Test/t_linux/cc_ml_2$ uconv -f SJIS cc_ml_2.cpp > dd.cpp Iwao@DS116:~/gcc_test/Test/t_linux/cc_ml_2$ g++ dd.cpp -Wall Iwao@DS116:~/gcc_test/Test/t_linux/cc_ml_2$ ./a.out 名称 2 Iwao@DS116:~/gcc_test/Test/t_linux/cc_ml_2$
#define の部分を別のファイルとして保存.test_ccc.hpp
“㎥” を次の様に指定してみたが,Windows コンソール AP ではうまくいかない.
#define Unit_M_ "Unit_M^3" #ifdef _MSC_VER #ifdef _UNICODE #define Unit_MJ L"\x7acb " L" \x33a5 " L" \x7c73" #else #define Unit_MJ "立米" #endif #else #define Unit_MJ "\xE3\x8E\xA5" #endif
Synology NAS では OK .
文字コードを検索できるサイト
https://www.fileformat.info/info/unicode/char/search.htm
2020/01/20
Windows AP の場合のコードを少し変更.
std::tout << ccc(Name_3_) << std::endl ; std::tout << ccc(Unit_M_) << std::endl ; tstring ccc_str ; ccc_str += ccc(Name_3_) + _T("\r\n") ; ccc_str += ccc(Unit_M_) + _T("\r\n") ; ::MessageBox(NULL,ccc_str.c_str(),_T("Test"),MB_OK) ;